2015-05-26 6 views
1

Как скопировать файл из одной папки в другую с помощью java? Я пытался использоватьКак скопировать файлы из одной папки в другую с помощью Java?

org.apache.commons.io.FileUtils.copyFileToDirectory(pasteItem, destinationPath); 

Это работает, если папка назначения не содержит файл с тем же именем. Он бросает IOException, если я пытаюсь вставить файл в папку. Однако есть ли способ справиться с этим? Может быть, я хочу просто вставить файл с именем, переименованным автоматически в pasteItem (1) или что-то в этом роде. Пожалуйста, предложите.

Фактически, я получаю новое имя для файла, если файл с тем же именем уже существует. Я не могу понять, как скопировать файл, а затем переименовать. Если я переименую сначала, а затем скопирую, я потеряю исходный файл. Если я сначала попытаюсь скопировать файл, то он даст исключение, поскольку File с таким же именем уже существует!

+1

[Копирование файла или каталога] (https://docs.oracle.com/javase/tutorial/essential/io/copy.html) – MadProgrammer

+0

Вы можете заменить пункт назначения с помощью ' Files.copy (src, dst, StandardCopyOption.REPLACE_EXISTING); ' –

+0

@KennethClark Замена файла - это не то, что я ищу. Мне нужно скопировать и сохранить оба файла. – NaveenBharadwaj

ответ

2

Вы можете использовать класс java.io.File. У этого есть метод, который проверяет, существует ли заполнение.

Пример:

//create files 
File original =new File("C:\\test\\testfile.txt"); 
File destination =new File("D:\\test\\file.txt"); 
//check if file exists. 
for(int x=0;destination.exists()==true;x++){ 
//if file exists then add 1 to file name and check if exists again. 
destination=new File("D\\test\\file"+x+".txt"); 

} 
//copy file. 
Files.copy(origional, destination, StandardCopyOption.REPLACE_EXISTING); 
1

Существует перегруженная версия этого метода с использованием булевского флага, который будет перезаписывать файл назначения, если это правда.

public static void copyFileToDirectory(File srcFile, 
        File destDir, 
        boolean preserveFileDate) 
          throws IOException 

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#copyFileToDirectory(java.io.File, java.io.File, boolean)

+0

FileUtils.copyFileToDirectory (Clipboard.getSystemClipboard(). GetFiles(). Get (0), destinationPath, true); Я использую это, но я получаю сообщение об ошибке. java.io.IOException: Source 'E: \ Workspace \ 02-TestRepository \ TestScript \ 6 \ 2.json' и пункт назначения 'E: \ Workspace \ 02-TestRepository \ TestScript \ 6 \ 2.json' одинаковы – NaveenBharadwaj

+0

@naveenbharadwaj Почему вы пытаетесь скопировать файл на себя? Это не имеет никакого смысла, не так ли? – Kon

+0

Я не копирую файл в файл. Источник - E: \ Workspace \ 02-TestRepository \ TestScript \ 6 \ 2.json. И местом назначения является E: \ Workspace \ 02-TestRepository \ TestScript \ 6. Я проверил его в режиме отладки. Однако функция copyFile получает вызов в copyToDirectory и бросает эту ошибку. Я не имею понятия почему – NaveenBharadwaj

Смежные вопросы