私のクラスにメソッドを作成する際に、予期しない問題が発生しました。私は他のシアトルのソリューションを試しましたが、彼らは私のために働いていません。私の方法では、単に指定された行を見つけ、不要な行をスキップしてファイルをコピーし、元のファイルを削除し、一時ファイルの名前を元のファイルの名前に変更するだけです。正常に新しいファイルが作成されますが、一時ファイルの名前を元の名前に変更できないため、以前のファイルを削除できません。私は理解できません、なぜですか?ファイルを削除したり名前を変更できないのはなぜですか?
void lineDelete(String file_name, String line_to_erase){
try {
int line_number = 0;
String newline = System.getProperty("line.separator");
File temp = new File("temporary.txt");
File theFile = new File(file_name+".txt");
String path = theFile.getCanonicalPath();
File filePath = new File(path);
BufferedReader reader = new BufferedReader(new FileReader(file_name + ".txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter(temp));
String lineToRemove = line_to_erase;
String currentLine;
while((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
if(trimmedLine.equals(lineToRemove)){
continue;
}
writer.write(currentLine + newline));
}
writer.close();
reader.close();
filePath.delete();
temp.renameTo(theFile);
}
catch (FileNotFoundException e){
System.out.println(e);
}
catch (IOException e){
System.out.println(e);
}
例外はありますか? – TDG
投稿されたコードはコンパイルされません。 tempFileが定義されていません。本当に問題がある実際のコードを投稿してください。 Files.deleteとFiles.moveを使用すると、問題の内容を説明するメッセージが表示されます。 –
いいえ、私は例外を取得していないし、tempFileについてはごめんね、それをtempに変更するのを忘れました。変数がより明確になるように元のコードを編集しました。 –