Можно ли переименовать файл сказать 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 :
Предположим, мы хотим переименовать файл в «newname», оставив файл в том же каталоге:
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());
Первая строка удостоверяется, что местоположение нового файла совпадает с каталогом, то есть родительским каталогом старого файла.
РЕДАКТИРОВАТЬ: я написал это, прежде чем я начал использовать Java 7, который представил очень похожий подход. Поэтому, если вы используете Java 7+, вы должны увидеть и подтвердить ответ kr37.
Переименование файла путем перемещения его на новое имя. (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();
}
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, чтобы убедиться, что файл переименования успешен, потому что он зависит от платформы (другая операционная система, другая файловая система) и не выдает исключение ввода-вывода в случае сбоя переименования.
Да, вы можете использовать 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());
работает, но только когда вы закрываете (или автоматически закрываете) ВСЕ используемые ресурсы ( 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();
}
}
}