Как переместить файл из одного места в другое в Java?



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



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

625   10  

10 ответов:

myFile.renameTo(new File("/the/new/place/newName.file"));

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

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

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

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

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

например.

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

посмотреть файлы документация для более подробной информации

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

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

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

просто добавьте исходные и конечные пути к папкам.

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

    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");
    }

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

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

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

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

  boolean success = file.renameTo(new File(Destdir, file.getName()));

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 flag = true;

    try {

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

    } catch (Exception e) {

        flag = false;
        e.printStackTrace();
    }

    return flag;
}
Files.move(source, target, REPLACE_EXISTING);

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

подробнее о файлы

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

// we use the older file i/o operations for this rather than the newer jdk7+ Files.move() operation
private boolean moveFileToDirectory(File sourceFile, String targetPath) {
    File tDir = new File(targetPath);
    if (tDir.exists()) {
        String newFilePath = targetPath+File.separator+sourceFile.getName();
        File movedFile = new File(newFilePath);
        if (movedFile.exists())
            movedFile.delete();
        return sourceFile.renameTo(new File(newFilePath));
    } else {
        LOG.warn("unable to move file "+sourceFile.getName()+" to directory "+targetPath+" -> target directory does not exist");
        return false;
    }       
}

Comments

    Ничего не найдено.