Как остановить перезапись txt файла и дать ему написать новую строку - PullRequest
0 голосов
/ 01 июня 2019

Проблема возникает из моего кода while, он сначала берет пользовательский ввод и помещает его в текстовый файл и спрашивает, хочет ли он ответить на него снова, но каждый пользователь делает это и завершает цикл, он просто принимает последний пользовательский вводи просто перезаписывает предыдущий ввод пользователя.Но это не то, что я хочу из своего кода.Вместо этого новый ответ должен находиться в новой строке текстового файла.

public static void main(String[] args) throws IOException {
    // TODO code application logic here

    int saldo = 10000;
    String anw = "j";
    int cost;



    try{
    File folder = new File("folderName");
    folder.mkdir();
    File f = new File(folder, "file1.txt"); //file to folder
    f.createNewFile(); //skapar fil
    //Scanner fileIn = new Scanner(f);
    System.out.println("File path" +f.getPath());

   //.----------------------------------
while(anw.equals("j")){

        Scanner in = new Scanner(System.in);
        FileWriter fWriter ;// removed null
        BufferedWriter writr;// removed null

        System.out.println("Ange utgiftspost:"); //post
        String post = in.nextLine();
        System.out.println("Ange kostnad:"); //kost
        cost=in.nextInt();
        in.nextLine();
        saldo = +saldo -cost; 
        System.out.println("saldo:" +saldo);
        System.out.println("Vill du mata in fler uppgifter? (j/n) :");
        anw = in.nextLine();
        String fileContent = "---"+post+"---"+cost+"---"+saldo; 

        fWriter = new FileWriter(f);
        writr = new BufferedWriter(fWriter);
        writr.write(fileContent);
        writr.newLine();                

        if (anw.equals("n")) {
            writr.close();
            //writer.close();
        //System.out.println("---"+post+"---"+cost+"---"+saldo);                

        }
    } //frågan slut
    }//try

    //Scanner fileIn = new Scanner(f);

      catch(Exception e){
  System.err.println(e.getMessage());
} 

    }

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

В моем предыдущем вопросе у меня был ответ @ASKW для этой проблемы.Он сказал, что BufferedWriter для моего конкретного случая не сработает.Но использование FilterWriter наедине с append решило бы это.

0 голосов
/ 01 июня 2019

Вы определяете с каждым циклом новые Scanner и *Writer объекты, которые вызывают перезапись содержимого. Определите их один раз и используйте повторно для каждой итерации.

Scanner in = new Scanner(System.in);
FileWriter fWriter = new FileWriter(f);
BufferedWriter writr = new BufferedWriter(fWriter);

while (anw.equals("j")) {
    // ...
}

Не забудьте закрыть ресурсы после цикла.

...