Как переместить файл из одного места в другое в Java? - PullRequest
76 голосов
/ 10 января 2011

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

Заранее спасибо!

Ответы [ 10 ]

110 голосов
/ 10 января 2011
myFile.renameTo(new File("/the/new/place/newName.file"));

Файл # renameTo делает это (он может не только переименовывать, но и перемещаться между каталогами, по крайней мере, в одной файловой системе).

Переименовываетфайл, обозначаемый этим абстрактным путем.

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

Если вам нужно более комплексное решение (например, перемещение файла между дисками), посмотрите на Apache Commons FileUtils # moveFile

57 голосов
/ 22 мая 2014

С Java 7 или новее вы можете использовать Files.move(from, to, CopyOption... options).

Е.Г.

Files.move(Paths.get("/foo.txt"), Paths.get("bar.txt"), StandardCopyOption.REPLACE_EXISTING);

Подробнее см. Документацию Файлы

5 голосов
/ 10 января 2011

Для перемещения файла вы также можете использовать ввод-вывод Jakarta Commons FileUtils.moveFile

При ошибке выдается IOException, поэтому, когда не сгенерировано исключение, вы знаете, что файл был перемещен.

4 голосов
/ 15 марта 2016

Просто добавьте пути к папке источника и назначения.

Переместит все файлы и папки из исходной папки в папка назначения.

    File destinationFolder = new File("");
    File sourceFolder = new File("");

    if (!destinationFolder.exists())
    {
        destinationFolder.mkdirs();
    }

    // Check weather source exists and it is folder.
    if (sourceFolder.exists() && sourceFolder.isDirectory())
    {
        // Get list of the files and iterate over them
        File[] listOfFiles = sourceFolder.listFiles();

        if (listOfFiles != null)
        {
            for (File child : listOfFiles )
            {
                // Move files to destination folder
                child.renameTo(new File(destinationFolder + "\\" + child.getName()));
            }

            // Add if you want to delete the source folder 
            sourceFolder.delete();
        }
    }
    else
    {
        System.out.println(sourceFolder + "  Folder does not exists");
    }
4 голосов
/ 10 января 2011

File.renameTo из Java IO может использоваться для перемещения файла в Java.Также см. этот ТАК вопрос .

3 голосов
/ 19 апреля 2018

Java 6

public boolean moveFile(String sourcePath, String targetPath) {

    File fileToMove = new File(sourcePath);

    return fileToMove.renameTo(new File(targetPath));
}

Java 7 (с использованием NIO)

public boolean moveFile(String sourcePath, String targetPath) {

    boolean fileMoved = true;

    try {

        Files.move(Paths.get(sourcePath), Paths.get(targetPath), StandardCopyOption.REPLACE_EXISTING);

    } catch (Exception e) {

        fileMoved = false;
        e.printStackTrace();
    }

    return fileMoved;
}
2 голосов
/ 08 июня 2017

Попробуйте это: -

  boolean success = file.renameTo(new File(Destdir, file.getName()));
2 голосов
/ 10 января 2011

Вы можете запустить внешний инструмент для этой задачи (например, copy в средах Windows), но для сохранения переносимости кода общий подход заключается в следующем:

  1. прочитать исходный файл в память
  2. записать содержимое в файл на новом месте
  3. удалить исходный файл

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

1 голос
/ 10 июня 2017
Files.move(source, target, REPLACE_EXISTING);

Вы можете использовать объект Files

Подробнее о Файлы

0 голосов
/ 08 января 2018

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

...