简体   繁体   中英

File is being recreated even though it already exists

How does this code delete the file I had and makes a new one??

public void actualizaJTextArea(String cliente){
    mensagens.setText("");
    Scanner scanner = null;
    File file = createFile(cliente + "chatswith.txt");
    try {
        scanner = new Scanner(file);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
    (...)
    scanner.close();
}
public static File createFile(String s){
    File file = new File(s);
    if(!file.exists()){
        try {
            boolean b = file.createNewFile();
            System.out.println(b);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }   
    return file;
}

Does the method createNewFile() do this? Thanks and I'm sorry if this has been asked before I just can't find it.

EDIT

I am also using createFile() in here to write in it but the use is the same so i guess that can't be it:

public void recebeMensagem(boolean b){
    while(true){
        Mensagem m = null;
        try {
            m = (Mensagem)input.readObject();
            System.out.println("Mensagem Recebida:"+m);
        } catch (ClassNotFoundException e){ 

        } catch (IOException e) {
            try {
                input.close();
                System.out.println("Server desligou...");
                break;
            } catch (IOException e1) {

            }
        }
        if(m != null){
            for(Mensagens mensagens:v){
                for(String string: m.getReceivers()){
                    if (mensagens.getCliente().equals(m.getAuthor()) && mensagens.getContacto().equals(string)){
                        mensagens.actualizaJTextArea(cliente);
                    }   
                }
            }   
            for(String Str :m.getReceivers()){
                PrintWriter p = null;
                File file = Mensagens.createFile(cliente + "chatswith.txt");
                try {
                    p = new PrintWriter(new FileWriter(file));
                    p.append(m.getAuthor()+"</<"+Str+"</<"+m.getText()+"\n");
                    p.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }   
            }   
        }
    }
}

createNewFile() is atomic and it will not delete the file if it is present. Please look at the boolean output, it should be false if your file exists already.

EDIT

add append parameter to FileWriter. It is overwriting every time.

FROM

p = new PrintWriter(new FileWriter(file));

TO

p = new PrintWriter(new FileWriter(file,true));

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