Overwriting txt file in java

后端 未结 5 619
悲哀的现实
悲哀的现实 2020-12-17 08:10

The code I\'ve written is supposed to overwrite over the contents of the selected text file, but it\'s appending it. What am I doing wrong exactly?

File fnew         


        
相关标签:
5条回答
  • 2020-12-17 08:29

    SOLVED

    My biggest "D'oh" moment! I've been compiling it on Eclipse rather than cmd which was where I was executing it. So my newly compiled classes went to the bin folder and the compiled class file via command prompt remained the same in my src folder. I recompiled with my new code and it works like a charm.

    File fold = new File("../playlist/" + existingPlaylist.getText() + ".txt");
    fold.delete();
    
    File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");
    
    String source = textArea.getText();
    System.out.println(source);
    
    try {
        FileWriter f2 = new FileWriter(fnew, false);
        f2.write(source);
        f2.close();
    
    } catch (IOException e) {
        e.printStackTrace();
    }   
    
    0 讨论(0)
  • 2020-12-17 08:35

    Add one more line after initializing file object

    File fnew = new File("../playlist/" + existingPlaylist.getText() + ".txt");
    fnew.createNewFile();
    
    0 讨论(0)
  • 2020-12-17 08:43

    This simplifies it a bit and it behaves as you want it.

    FileWriter f = new FileWriter("../playlist/"+existingPlaylist.getText()+".txt");
    
    try {
     f.write(source);
     ...
    } catch(...) {
    } finally {
     //close it here
    }
    
    0 讨论(0)
  • 2020-12-17 08:46

    Your code works fine for me. It replaced the text in the file as expected and didn't append.

    If you wanted to append, you set the second parameter in

    new FileWriter(fnew,false);
    

    to true;

    0 讨论(0)
  • 2020-12-17 08:46

    The easiest way to overwrite a text file is to use a public static field.

    this will overwrite the file every time because your only using false the first time through.`

    public static boolean appendFile;
    

    Use it to allow only one time through the write sequence for the append field of the write code to be false.

    // use your field before processing the write code
    
    appendFile = False;
    
    File fnew=new File("../playlist/"+existingPlaylist.getText()+".txt");
    String source = textArea.getText();
    System.out.println(source);
    FileWriter f2;
    
    try {
         //change this line to read this
    
        // f2 = new FileWriter(fnew,false);
    
        // to read this
        f2 = new FileWriter(fnew,appendFile); // important part
        f2.write(source);
    
        // change field back to true so the rest of the new data will
        // append to the new file.
    
        appendFile = true;
    
        f2.close();
     } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
     }           
    
    0 讨论(0)
提交回复
热议问题