我需要用java寫一個函式,可以實作一些簡單的功能。
- 獲取檔案夾中前 2 個最新“pdf”的名稱
- 將這些 pdf 分別重命名為 first 和 second。
這是我嘗試過的:
File dir = new File("C:\\Users\\sharm\\Downloads\\");
File[] files = dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".pdf");
}});
Arrays.sort(files, new Comparator<File>(){
public int compare(File f1, File f2) {
return Long.valueOf(f2.lastModified()).compareTo(f1.lastModified());
}
});
String filenames = Arrays.toString(files);
filenames = filenames.substring(1, filenames.length() - 1);
String[] arrOfStr = filenames.split( "," , 3);
File file = new File(arrOfStr[0]);
File file2 = new File("Outbound.pdf");
file.renameTo(file2);
String secondFileName = arrOfStr[1];
secondFileName.trim();
StringBuilder sb = new StringBuilder(secondFileName);
sb.deleteCharAt(0);
File file3 = new File(sb.toString());
File file4 = new File("Inbound.pdf");
file3.renameTo(file4);
當我對第二個檔案名執行 sysout 以發現開頭有一個空格時。因此我決定使用 sb 消除那個空間。但總而言之,第一個檔案名更改成功,但第二個更改不會發生。而他們都以相同的原理作業并使用相同的renameTo方法。有什么東西只能在代碼中使用一次嗎?有人可以幫忙嗎?我一整天都在為此撓頭。
uj5u.com熱心網友回復:
嘗試這個。
File dir = new File("C:\\Users\\sharm\\Downloads\\");
File[] files = dir.listFiles((d, name) -> name.endsWith(".pdf"));
Arrays.sort(files, Comparator.comparing((File f) -> f.lastModified()).reversed());
files[0].renameTo(new File(dir, "Outbound.pdf"));
files[1].renameTo(new File(dir, "Inbound.pdf"));
uj5u.com熱心網友回復:
我認為沒有必要將串列轉換為字串并將其決議回檔案。通過重命名索引獲得第一和第二應該有效:
// after your filtering / sorting code
File firstFile = files.get(0);
File secondFile = files.get(1);'
firstFile.renameTo(new File("Outbound.pdf"));
secondFile.renameTo(new File("Inbound.pdf"));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/360988.html
