Chúng ta có thể đổi tên một tập tin nói test.txt
với test1.txt
?
Nếu test1.txt
tồn tại nó sẽ đổi tên?
Làm cách nào để đổi tên nó thành tệp test1.txt đã có để nội dung mới của test.txt được thêm vào để sử dụng sau này?
Chúng ta có thể đổi tên một tập tin nói test.txt
với test1.txt
?
Nếu test1.txt
tồn tại nó sẽ đổi tên?
Làm cách nào để đổi tên nó thành tệp test1.txt đã có để nội dung mới của test.txt được thêm vào để sử dụng sau này?
Câu trả lời:
Sao chép từ http://examplingepot.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
}
Để thêm vào tập tin mới:
java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/);
Path
cách làm việc cho tôi, renameTo
luôn trả về sai. Hãy đánh dấu câu trả lời của kr37 hoặc câu trả lời này
Nói ngắn gọn:
Files.move(source, source.resolveSibling("newname"));
Chi tiết hơn:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Sau đây được sao chép trực tiếp từ http://docs.oracle.com/javase/7/docs/api/index.html :
Giả sử chúng ta muốn đổi tên một tệp thành "newname", giữ tệp trong cùng một thư mục:
Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));
Ngoài ra, giả sử chúng tôi muốn di chuyển một tệp sang thư mục mới, giữ cùng tên tệp và thay thế bất kỳ tệp hiện có của tên đó trong thư mục:
Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
Bạn muốn sử dụng phương thức renameTo trên một đối tượng Tệp .
Đầu tiên, tạo một đối tượng File để thể hiện đích. Kiểm tra xem nếu tập tin đó tồn tại. Nếu nó không tồn tại, tạo một đối tượng Tệp mới cho tệp sẽ được di chuyển. gọi phương thức renameTo trên tệp sẽ được di chuyển và kiểm tra giá trị được trả về từ renameTo để xem cuộc gọi có thành công hay không.
Nếu bạn muốn nối các nội dung của tập tin này với tập tin khác, có một số nhà văn có sẵn. Dựa trên phần mở rộng, có vẻ như đó là văn bản đơn giản, vì vậy tôi sẽ xem FileWriter .
Đối với Java 1.6 trở xuống, tôi tin rằng API an toàn và sạch nhất cho việc này là Files.move của Guava .
Thí dụ:
File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());
Dòng đầu tiên đảm bảo rằng vị trí của tệp mới là cùng một thư mục, tức là thư mục mẹ của tệp cũ.
EDIT: Tôi đã viết điều này trước khi tôi bắt đầu sử dụng Java 7, nó đã giới thiệu một cách tiếp cận rất giống nhau. Vì vậy, nếu bạn đang sử dụng Java 7+, bạn sẽ thấy và nâng cấp câu trả lời của kr37.
Đổi tên tập tin bằng cách di chuyển nó sang một tên mới. (FileUtils là từ 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"));
Để thay thế một tệp hiện có bằng tên "text1.txt":
Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);
Thử cái này
File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult
Lưu ý: Chúng ta phải luôn kiểm tra giá trị đổi tên Để trả về để đảm bảo đổi tên tệp thành công vì nó phụ thuộc vào nền tảng (hệ điều hành khác, hệ thống tệp khác) và nó không ném ngoại lệ IO nếu đổi tên không thành công.
Có, bạn có thể sử dụng File.renameTo (). Nhưng hãy nhớ có đường dẫn chính xác trong khi đổi tên nó thành một tệp mới.
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));
}
});
}
}
}
Nếu nó chỉ đổi tên tệp, bạn có thể sử dụng File.renameTo () .
Trong trường hợp bạn muốn nối các nội dung của tệp thứ hai vào tệp thứ nhất, hãy xem FileOutputStream với tùy chọn bổ sung hàm tạo hoặc Điều tương tự cho FileWriter . Bạn sẽ cần phải đọc nội dung của tệp để chắp thêm và viết chúng ra bằng luồng đầu ra / trình ghi.
Files.move(file.toPath(), fileNew.toPath());
hoạt động, nhưng chỉ khi bạn đóng (hoặc tự động đóng) TẤT CẢ các tài nguyên đã sử dụng ( InputStream
, FileOutputStream
v.v.) tôi nghĩ tình huống tương tự với file.renameTo
hoặc FileUtils.moveFile
.
Đây là mã của tôi để đổi tên nhiều tệp trong một thư mục thành công:
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();
}
}
}
}
và chạy nó cho một ví dụ:
renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");
Chạy mã ở đây.
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();
}
}
}