Ich versuche, POP3-Protokoll-Funktionen zu implementieren, und ich möchte das Dateisystem (Verzeichnisse und Textdateien darin) als eine Datenbank zum Speichern von E-Mails verwenden. Dazu muss ich bei jedem Zugriff auf die Datenbank die .txt-Dateien (email1.txt, email2.txt, ..) neu nummerieren, um zu überprüfen, ob eine der E-Mails gelöscht wurde. Nehmen wir an, dass email2.txt gelöscht wurde, das heißt in der nächsten Transaktion werden alle Emails neu nummeriert und email3.txt wird in email2.txt umbenannt, email4 wird email3 ans usw. und wenn keiner von ihnen gelöscht wird, sollten alle Dateien unverändert bleibenWie alle Dateien in einem Verzeichnis in Linux mit Java umbenennen?
Ich habe versucht, folgenden Code zu verwenden, aber es funktioniert nicht. Es funktioniert jedoch gut mit Windows. Ich weiß, dass das Umbenennen einer Datei vom Betriebssystem abhängig ist.
File dir = new File(absolutePath);
File[] filesInDir = dir.listFiles();
int i = 0;
for(File file1:filesInDir) {
i++;
String oldName = file1.getName();
oldName = absolutePath + "/" + oldName;
File oldFile=new File(oldName);
String newName = "email" + i + ".txt";
newName = absolutePath + "/" + newName;
File newFile =new File(newName);
oldFile.renameTo(newFile);
}
Das erste, was Sie tun sollten, ist der Pfad, Pfade verwenden und Dateien Klassen der [java.nio.file] (https://docs.oracle.com/javase/8/docs/api/ java/nio/file/package-summary.html) anstelle von java.io.File. java.io.File ist eine sehr alte Klasse, die Ihnen nicht erklärt, warum eine Operation fehlgeschlagen ist. – VGR
Sie müssen auch File.seprator verwenden – efekctive