Я хочу скопировать файлы из исходного каталога в место назначения. Если файл уже существует в целевом каталоге, добавьте новый файл для копирования с его меткой времени, чтобы не было перезаписи. Как проверить наличие дубликатов и добавить метку времени к новому имени файла? Пожалуйста помоги!

public static void copyFolder(File src, File dest)
    throws IOException{
        //list all the directory contents
        String files[] = src.list();
        for (String file : files) {
           //construct the src and dest file structure
           File srcFile = new File(src, file);
           File destFile = new File(dest, file);
           //recursive copy
           copyFolder(srcFile,destFile);
        }
    }else{
        //if file, then copy it
        //Use bytes stream to support all file types
        InputStream in = new FileInputStream(src);
            OutputStream out = new FileOutputStream(dest);
            byte[] buffer = new byte[1024];
        int length;
            //copy the file content in bytes
            while ((length = in.read(buffer)) > 0){
               out.write(buffer, 0, length);
            }

            in.close();
            out.close();
            System.out.println("File copied from " + src + " to " + dest);
    }
}
0
Shetty 13 Мар 2018 в 03:57

2 ответа

Лучший ответ
    //construct the src and dest file structure
    File srcFile = new File(src, file);
    File destFile = new File(dest, file);
    while (destFile.exists()) {
        destFile = new File(dest, file + '-' + Instant.now());
    }

В одном случае файл назначения получил имя test-file.txt-2018-03-14T11:05:21.103706Z. Время указано в UTC. В любом случае вы получите имя файла, который еще не существует (если цикл завершится, но мне трудно увидеть сценарий, в котором его нет).

Вы можете добавить метку времени только к обычным файлам и повторно использовать существующие папки (каталоги), я не знаю ваших требований здесь. И вы можете добавить метку времени перед расширением, если оно есть (чтобы вместо этого получить test-file-2018-03-14T11:05:21.103706Z.txt). Я доверяю вам внести необходимые изменения.

0
Ole V.V. 14 Мар 2018 в 11:09

Вы можете проверить, существует ли файл, используя метод File.exist (), если он существует, вы можете открыть файл в режиме добавления

Код это что-то вроде этого

File f = new File(oldName);
if(f.exists() && !f.isDirectory()) { 
    long currentTime=System.currentTimeMillis();
    String newName=oldName+currentTime;
    // do the copy

}
0
Robin 13 Мар 2018 в 02:51