Переименуйте файл с помощью Java

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

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

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

Ответ 1

Скопировано из http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html

// File (or directory) with old name
File file = new File("oldname");

// File (or directory) with new name
File file2 = new File("newname");

if (file2.exists())
   throw new java.io.IOException("file exists");

// Rename file (or directory)
boolean success = file.renameTo(file2);

if (!success) {
   // File was not successfully renamed
}

Чтобы добавить к новому файлу:

java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/);

Ответ 2

Короче:

Files.move(source, source.resolveSibling("newname"));

Подробнее:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

Скопировано прямо из http://docs.oracle.com/javase/7/docs/api/index.html:

Предположим, мы хотим переименовать файл в "новое имя", сохранив файл в том же каталоге:

Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));

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

Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);

Ответ 3

Вы хотите использовать метод renameTo на File.

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

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

Ответ 4

Для Java 1.6 и ниже я считаю, что самым безопасным и чистым API для этого является Guava Files.move.

Пример:

File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());

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

EDIT: Я написал это до того, как начал использовать Java 7, который ввел очень похожий подход. Поэтому, если вы используете Java 7+, вы должны увидеть и откорректировать ответ kr37.

Ответ 5

Переименование файла, переместив его на новое имя. (FileUtils из Apache Commons IO lib)

  String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName;
  File newFile = new File(newFilePath);

  try {
    FileUtils.moveFile(oldFile, newFile);
  } catch (IOException e) {
    e.printStackTrace();
  }

Ответ 6

Это простой способ переименовать файл:

        File oldfile =new File("test.txt");
        File newfile =new File("test1.txt");

        if(oldfile.renameTo(newfile)){
            System.out.println("File renamed");
        }else{
            System.out.println("Sorry! the file can't be renamed");
        }

Ответ 7

Если он просто переименовывает файл, вы можете использовать File.renameTo().

В случае, когда вы хотите добавить содержимое второго файла к первому, посмотрите FileOutputStream с опцией конструктора append или То же самое для FileWriter. Вам нужно будет прочитать содержимое файла, чтобы добавить и записать их с помощью выходного потока/записи.

Ответ 8

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.*;

Path yourFile = Paths.get("path_to_your_file\text.txt");

Files.move(yourFile, yourFile.resolveSibling("text1.txt"));

Чтобы заменить существующий файл на имя "text1.txt":

Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);

Ответ 9

Попробуй это

File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult

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

Ответ 10

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

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

Ответ 11

Files.move(file.toPath(), fileNew.toPath()); 

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

Ответ 12

Здесь находится код запуска.

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