Java: копировать файлы между каталогами - PullRequest
0 голосов
/ 07 октября 2011

Используя Java, как я могу переместить файл из одного каталога в другой? Должен ли я просто использовать streamReader для копирования байтов в каталог назначения, а затем удалить исходный файл?

Ответы [ 8 ]

2 голосов
/ 07 октября 2011

Это звучит неправильно. Если вы действительно перемещаете файл (а не делаете копию), то вам следует использовать гораздо более дешевый метод переименования. (File.renameTo ()) кажется рекомендуемым методом).

[Редактировать] Операция перемещения в большинстве (возможно, даже ... во всех) операционных системах намного дешевле, чем полное копирование и удаление. Это эквивалентно удалению записи для файла в одном каталоге и добавлению его в другой каталог (или под другим именем в том же каталоге). Для этой операции нет необходимости прикасаться к фактическим данным в файле.

2 голосов
/ 07 октября 2011

Попробуйте операцию File.renameTo. Несмотря на название, его также можно использовать для перемещения файлов. Однако имейте в виду, что, как указано в документации, его поведение будет зависеть от платформы, на которой вы работаете.

Пример:

File oldFile = ...;
File newDirectory = ...;
String newName = ...;
File newFile = new File(newDirectory, newName);

oldName.renameTo(newFile);
1 голос
/ 07 октября 2011

Или вы можете использовать Java NIO:

http://www.exampledepot.com/egs/java.nio/File2File.html

0 голосов
/ 07 октября 2011

Сначала попробуйте File.renameTo(), чтобы сделать реальный ход.Если это не поможет, сделайте реальное копирование / удаление.Кроме того: InputStream и OutputStream - самый простой способ сделать копию.Но если вы не хотите изобретать велосипед, вы можете использовать FileUtis , чтобы сделать именно то, что я описал.

0 голосов
/ 07 октября 2011

вы можете сделать файл renameTo и присвоить ему новое местоположение файла в качестве параметра.

См. Здесь

0 голосов
/ 07 октября 2011

Попробуйте метод copyFile класса FileUtils из API Apache commons-IO .

Это было проверено для вас!

0 голосов
/ 07 октября 2011

Вместо того, чтобы кататься по своему усмотрению, вы можете использовать что-то вроде утилиты ввода / вывода apache commons.

Здесь вы можете просто позвонить FileUtils.copyFile

Подробнее см. Здесь http://commons.apache.org/io/apidocs/org/apache/commons/io/FileUtils.html

0 голосов
/ 07 октября 2011

Я предлагаю вам использовать FileUtils класс из org.apache.common.Документация здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...