循环中的缓冲编写器正在 txt 文件中创建空行
Buffered writer in a loop is creating empty lines in txt file
Link 到整个代码:http://pastebin.com/Y0FA7zuG
我的代码:
public void dadUpdateFunction(ArrayList<JTextArea> texts)
{
try{
//Specify the file name and path here
File file =new File("C:\Users\Karan\Documents\dadTXT.txt");
/* This logic is to create the file if the
* file is not already present
*/
if(!file.exists()){
file.createNewFile();
}
//Here true is to append the content to file
FileWriter fw = new FileWriter(file,true);
//BufferedWriter writer give better performance
BufferedWriter bw = new BufferedWriter(fw);
String content = "Karan";
int i= 0;
for(i= 0; i<texts.size(); i++)
{
content = (texts.get(i).getText() );
if(i!=0)
bw.newLine();
if(i>0)
texts.get(i-1).setEditable(false);
}
bw.write(content + "\n");
//Closing BufferedWriter Stream
bw.close();
System.out.println("Data successfully appended at the end of file");
}catch(IOException ioe){
System.out.println("Exception occurred:");
}
}
所以我有一个 JTextArea 数组列表。在我的程序中,用户可以在 JTextArea 中写入,然后单击此更新按钮,然后将在最新的 JTextArea 框中写入的文本添加到 txt 文件中。然而,我在我的 txt 文件中得到的输出是这样输出的:http://pastebin.com/fijFQKZi
我不想要数字之间的空行,因为这会弄乱我稍后缓冲的 reader。为什么要添加这些空行?
我该如何解决这个问题?我是新来的,所以如果我没有正确地写一些东西,请告诉我。 T
谢谢!
这让我在很多方面感到困惑。在你的循环中,你不断地给 content
一个新值而不做任何事情直到循环结束。同时,除了第一次之外,您将换行符写入缓冲区(这部分是有道理的)。我认为您需要在循环内移动 bw.write(content) 并在循环后将其删除。
for(i=0; i<texts.size(); i++)
{
if(i!=0) {
bw.newLine();
}
bw.write(texts.get(i).getText());
if(i>0) {
texts.get(i-1).setEditable(false);
}
}
bw.close();
如果您只想要最后的 JTextArea
内容而不需要其他 newLine
,则必须删除
if(i!=0)
bw.newLine();
即为每个 JTextArea
添加一个新行。
现在,如果这确实是您想要的,您可以像这样重构:
content = texts.get(texts.size()-1).getText(); // get only the last one
bw.write(content + "\n"); // write last content
for(int i= 0; i<texts.size(); i++)
{
texts.get(i).setEditable(false);
}
Link 到整个代码:http://pastebin.com/Y0FA7zuG
我的代码:
public void dadUpdateFunction(ArrayList<JTextArea> texts)
{
try{
//Specify the file name and path here
File file =new File("C:\Users\Karan\Documents\dadTXT.txt");
/* This logic is to create the file if the
* file is not already present
*/
if(!file.exists()){
file.createNewFile();
}
//Here true is to append the content to file
FileWriter fw = new FileWriter(file,true);
//BufferedWriter writer give better performance
BufferedWriter bw = new BufferedWriter(fw);
String content = "Karan";
int i= 0;
for(i= 0; i<texts.size(); i++)
{
content = (texts.get(i).getText() );
if(i!=0)
bw.newLine();
if(i>0)
texts.get(i-1).setEditable(false);
}
bw.write(content + "\n");
//Closing BufferedWriter Stream
bw.close();
System.out.println("Data successfully appended at the end of file");
}catch(IOException ioe){
System.out.println("Exception occurred:");
}
}
所以我有一个 JTextArea 数组列表。在我的程序中,用户可以在 JTextArea 中写入,然后单击此更新按钮,然后将在最新的 JTextArea 框中写入的文本添加到 txt 文件中。然而,我在我的 txt 文件中得到的输出是这样输出的:http://pastebin.com/fijFQKZi
我不想要数字之间的空行,因为这会弄乱我稍后缓冲的 reader。为什么要添加这些空行?
我该如何解决这个问题?我是新来的,所以如果我没有正确地写一些东西,请告诉我。 T
谢谢!
这让我在很多方面感到困惑。在你的循环中,你不断地给 content
一个新值而不做任何事情直到循环结束。同时,除了第一次之外,您将换行符写入缓冲区(这部分是有道理的)。我认为您需要在循环内移动 bw.write(content) 并在循环后将其删除。
for(i=0; i<texts.size(); i++)
{
if(i!=0) {
bw.newLine();
}
bw.write(texts.get(i).getText());
if(i>0) {
texts.get(i-1).setEditable(false);
}
}
bw.close();
如果您只想要最后的 JTextArea
内容而不需要其他 newLine
,则必须删除
if(i!=0)
bw.newLine();
即为每个 JTextArea
添加一个新行。
现在,如果这确实是您想要的,您可以像这样重构:
content = texts.get(texts.size()-1).getText(); // get only the last one
bw.write(content + "\n"); // write last content
for(int i= 0; i<texts.size(); i++)
{
texts.get(i).setEditable(false);
}