简体   繁体   中英

I have a filewriter method that only ouputs to the file when i close it

String filePath = "Seat";

static void modifyFile(String filePath, String oldString, String newString) {
    File fileToBeModified = new File(filePath);

    String oldContent = "";

    BufferedReader reader = null;

    BufferedWriter writer = null;

    try {
        reader = new BufferedReader(new FileReader(fileToBeModified));

        //Reading all the lines of input text file into oldContent

        String line = reader.readLine();

        while (line != null) {
            oldContent = oldContent + line + System.lineSeparator();

            line = reader.readLine();
        }

        //Replacing oldString with newString in the oldContent

        String newContent = oldContent.replaceAll(oldString, newString);

        //Rewriting the input text file with newContent

        writer = new BufferedWriter(new FileWriter(fileToBeModified));


        writer.write(newContent);


        writer.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            //Closing the resources

            reader.close();

            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

This method is meant to change a certain line in a file the method itself works when run but it only changes the line when i close the program which is when it closes the writer, i looked it up and add writer.flush() earlier on in the code to see if that would work but i still have the same problem

You are trying to read from and write to the same file. You cannot do both operations at the same time as the file will get locked. close the reader and then do the write operation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM