您好我的UI有问题。目前,我希望我的UI在每次单击保存时将输入附加到文本板中。单击保存按钮后,它将返回菜单以询问用户是否要输入另一个输入。如果用户单击是,它将返回到输入部分。但是当我第二次尝试输入时,它会覆盖我最初写的内容。如何更改代码以解决此问题?
private void saveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BufferedWriter output = null;
FileInputStream fs = null;
try {
// TODO add your handling code here:
File myFile = new File("C:/Users/kai/Desktop/sample.txt");
fs = new FileInputStream("C:/Users/kai/Desktop/sample.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
myFile.createNewFile();
output = new BufferedWriter(new FileWriter(myFile));
//output.flush();
for(int i = 0; i<100; ++i){
String line = br.readLine();
if(line.equals(null)){
String name = text1.getText();
String id = text2.getText();
output.write(name + " " + id);
break;
}
}
// output.newLine();
} catch (IOException ex) {
Logger.getLogger(setup.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
output.close();
} catch (IOException ex) {
Logger.getLogger(setup.class.getName()).log(Level.SEVERE, null, ex);
}
}
this.dispose();
}
答案 0 :(得分:5)
但是当我第二次尝试输入时,它会覆盖我最初写的内容。
在追加模式下打开FileWriter
。
阅读FileWriter
API以找到要使用的相应构造函数。
答案 1 :(得分:1)
即使在读取旧的sample.txt之前,也会创建一个新的sample.txt。一种方法是将文本输入读入String并使用新输出添加新行字符(&#34; \ n&#34;)并与输入连接以创建新的相同文件。
答案 2 :(得分:0)
特别感谢camickr和Kesavacharan。以下是我编辑的版本。如果您发现我的代码可以改进,请随时发表评论。
private void saveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BufferedWriter output = null;
FileInputStream fs = null;
FileWriter fout = null;
try {
// TODO add your handling code here:
File myFile = new File("C:/Users/kai/Desktop/sample.txt");
fs = new FileInputStream("C:/Users/kai/Desktop/sample.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
output = new BufferedWriter(new FileWriter(myFile,true));
PrintWriter fileout = new PrintWriter(output,true);
for(int i = 0; i<100; ++i){
String line = br.readLine();
if(line==null){
String name = text1.getText();
String id = text2.getText();
fileout.println(name + " " + id);
break;
}
}
} catch (IOException ex) {
Logger.getLogger(setup.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
output.close();
} catch (IOException ex) {
Logger.getLogger(setup.class.getName()).log(Level.SEVERE, null, ex);
}
}
this.dispose();
}