Переименовать файл, используя Java - PullRequest
150 голосов
/ 21 июля 2009

Можем ли мы переименовать файл, скажем test.txt в test1.txt?

Если test1.txt существует, будет ли оно переименовано?

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

Ответы [ 14 ]

2 голосов
/ 21 июля 2009

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

О переименовании файла в Java см. Документацию для метода renameTo() в классе File.

1 голос
/ 11 сентября 2018

Вот мой код для успешного переименования нескольких файлов в папке:

public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
    if(newName == null || newName.equals("")) {
        System.out.println("New name cannot be null or empty");
        return;
    }
    if(extension == null || extension.equals("")) {
        System.out.println("Extension cannot be null or empty");
        return;
    }

    File dir = new File(folderPath);

    int i = 1;
    if (dir.isDirectory()) { // make sure it's a directory
        for (final File f : dir.listFiles()) {
            try {
                File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);

                if(f.renameTo(newfile)){
                    System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
                } else {
                    System.out.println("Rename failed");
                }
                i++;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

и запустите его для примера:

renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");
0 голосов
/ 23 сентября 2017

Рабочий код здесь.

private static void renameFile(File fileName) {

    FileOutputStream fileOutputStream =null;

    BufferedReader br = null;
    FileReader fr = null;

    String newFileName = "yourNewFileName"

    try {
        fileOutputStream = new FileOutputStream(newFileName);

        fr = new FileReader(fileName);
        br = new BufferedReader(fr);

        String sCurrentLine;

        while ((sCurrentLine = br.readLine()) != null) {
            fileOutputStream.write(("\n"+sCurrentLine).getBytes());
        }

        fileOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            fileOutputStream.close();
            if (br != null)
                br.close();

            if (fr != null)
                fr.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
0 голосов
/ 30 марта 2017
Files.move(file.toPath(), fileNew.toPath()); 

работает, но только когда вы закрываете (или автоматически закрываете) ВСЕ используемые ресурсы (InputStream, FileOutputStream и т. Д.) Я думаю, что такая же ситуация с file.renameTo или FileUtils.moveFile.

...