Frage

Ich möchte eine bestimmte Linie auf einer Textdatei aktualisieren können. Aber ich habe den Fehler, dass sie die Datei nicht löschen können, warum bekomme ich diesen Fehler?

public class Main {
    public static void main(String[] args) {
        Main rlf = new Main();
        rlf.removeLineFromFile("F:\\text.txt", "bbb");
    }

    public void removeLineFromFile(String file, String lineToRemove) {
        try {
            File inFile = new File(file);

            if (!inFile.isFile()) {
                System.out.println("Parameter is not an existing file");
                return;
            }

            //Construct the new file that will later be renamed to the original filename.
            File tempFile = new File(inFile.getAbsolutePath() + ".tmp");

            BufferedReader br = new BufferedReader(new FileReader(file));
            PrintWriter pw = new PrintWriter(new FileWriter(tempFile));

            String line = null;

            //Read from the original file and write to the new
            //unless content matches data to be removed.
            while ((line = br.readLine()) != null) {

                if (!line.trim().equals(lineToRemove)) {

                    pw.println(line);
                    pw.flush();
                }
            }
            pw.close();
            br.close();

            //Delete the original file
            if (!inFile.delete()) {
                System.out.println("Could not delete file");
                return;
            }

            //Rename the new file to the filename the original file had.
            if (!tempFile.renameTo(inFile)) System.out.println("Could not rename file");

        }
        catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}​
War es hilfreich?

Lösung

Das Programm funktioniert für mich. Vielleicht haben Sie ein Umweltproblem.

Andere Tipps

Sie sollten schauen Sie in RandomAccessFile .

Damit können Sie auf die Stelle in der Datei suchen, die Sie wollen, und nur den Teil aktualisieren, die Sie aktualisieren möchten.

Wie zeigte Justin oben, sollten Sie die Random Art von api verwenden, wenn Sie wollen Teile der Datei ändern. Der Ansatz, den Sie verwenden möchten, hat eine Menge von möglichen Problemen.

  • Es erfordert eine tmp-Datei zusätzlich erstellt werden. Kann nicht für große Dateien (ich bin mir nicht bewusst, Ihr Problem Domain, obwohl)
  • maßstabs
  • Der Versuch, jonglieren Dateien können auch mehrere mögliche Ausnahmen verursachen und erfordert eine Menge Fehlerbehandlung.

Sie können eine neue Instanz erstellen (um die alte zu schließen) durch new dann löschen Sie es.
Gleiche Datei löschen Problem hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top