gpt4 book ai didi

java - 如何停止覆盖txt文件并让它在新行中写入

转载 作者:行者123 更新时间:2023-12-02 04:57:57 25 4
gpt4 key购买 nike

问题发生在我的 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());
}

}

最佳答案

您在每个循环中定义新的 Scanner*Writer 对象,这会导致内容被覆盖。定义一次并在每次迭代中重用。

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

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

不要忘记在循环之后关闭资源。

关于java - 如何停止覆盖txt文件并让它在新行中写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com