Чи можна перейменувати файл сказати test.txt
в test1.txt
?
Якщо test1.txt
існує, чи буде вона перейменована?
Як перейменувати його на вже існуючий файл test1.txt, щоб новий вміст test.txt був доданий до нього для подальшого використання?
Чи можна перейменувати файл сказати test.txt
в test1.txt
?
Якщо test1.txt
існує, чи буде вона перейменована?
Як перейменувати його на вже існуючий файл test1.txt, щоб новий вміст test.txt був доданий до нього для подальшого використання?
Відповіді:
Скопійовано з 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*/);
Path
як працює для мене, renameTo
завжди повертає помилкове. Перевірте або відповідь kr37, або цю відповідь
Коротко:
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);
Ви хочете використовувати метод renameTo на об’єкті File .
Спочатку створіть об'єкт File для представлення пункту призначення. Перевірте, чи існує цей файл. Якщо його не існує, створіть новий об’єкт File для переміщення файлу. зателефонуйте методу renameTo у файл, який потрібно перемістити, і перевірте повернене значення від renameTo, щоб побачити, чи був виклик вдалим.
Якщо ви хочете додати вміст одного файлу до іншого, доступна кількість авторів. Виходячи з розширення, це здається, що це звичайний текст, тому я би поглянув на FileWriter .
Для Java 1.6 та новіших версій я вважаю, що найбезпечнішим та найчистішим API для цього є Files.move Guava .
Приклад:
File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());
Перший рядок гарантує, що розташування нового файлу є тим самим каталогом, тобто батьківським каталогом старого файлу.
EDIT: Я писав це ще до того, як почав використовувати Java 7, який запровадив дуже схожий підхід. Отже, якщо ви використовуєте Java 7+, вам слід побачити і підтвердити відповідь kr37.
Перейменування файла шляхом переміщення його до нового імені. (FileUtils - від IO lib Apache Commons)
String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName;
File newFile = new File(newFilePath);
try {
FileUtils.moveFile(oldFile, newFile);
} catch (IOException e) {
e.printStackTrace();
}
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);
Спробуйте це
File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult
Примітка. Ми повинні завжди перевіряти значення повернення renameTo, щоб переконатися, що файл перейменування є успішним, оскільки він залежить від платформи (інша Операційна система, інша файлова система) і не викидає IO виключення, якщо перейменування не вдалося.
Так, ви можете використовувати File.renameTo (). Але пам’ятайте, що під час перейменування його в новий файл був правильний шлях.
import java.util.Arrays;
import java.util.List;
public class FileRenameUtility {
public static void main(String[] a) {
System.out.println("FileRenameUtility");
FileRenameUtility renameUtility = new FileRenameUtility();
renameUtility.fileRename("c:/Temp");
}
private void fileRename(String folder){
File file = new File(folder);
System.out.println("Reading this "+file.toString());
if(file.isDirectory()){
File[] files = file.listFiles();
List<File> filelist = Arrays.asList(files);
filelist.forEach(f->{
if(!f.isDirectory() && f.getName().startsWith("Old")){
System.out.println(f.getAbsolutePath());
String newName = f.getAbsolutePath().replace("Old","New");
boolean isRenamed = f.renameTo(new File(newName));
if(isRenamed)
System.out.println(String.format("Renamed this file %s to %s",f.getName(),newName));
else
System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
}
});
}
}
}
Якщо це лише перейменування файлу, ви можете використовувати File.renameTo () .
У випадку, коли ви хочете додати вміст другого файлу до першого, подивіться на FileOutputStream з опцією конструктора додавання або те ж саме для FileWriter . Вам потрібно буде прочитати вміст файлу для додавання та виписати їх за допомогою вихідного потоку / запису.
Наскільки мені відомо, перейменування файлу не додасть його вмісту до наявного файлу з цільовим ім'ям.
Про перейменування файлу в Java див. Документацію щодо renameTo()
методу в класі File
.
Files.move(file.toPath(), fileNew.toPath());
працює, але тільки тоді , коли ви близько (або AUTOCLOSE) всі використовувані ресурси ( InputStream
, і FileOutputStream
т.д.) Я думаю , що така ж ситуація з file.renameTo
чи FileUtils.moveFile
.
Ось мій код для успішного перейменування декількох файлів у папці:
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");
Тут запущений код.
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();
}
}
}