过去半小时我一直在尝试这个,但我能想到的只有以下几点:
for (int y = 0; y < colectieTotala.size(); y++)
for (int k = 0; k < colectieTotala.get(y).size(); k++)
{
try(BufferedWriter output = new BufferedWriter(new FileWriter("D:\\Programe\\NetBeans\\Proiecte NetBeans\\[PA]Tema3Ex1\\Colectie.txt", true)))
{
output.write(colectieTotala.get(y).get(k)); output.newLine();
}
}
这是Colectie.txt的结构:http://postimg.org/image/656f1mow5/
问题是它只在Colectie.txt文件的第一行写了当前的String,取代了之前介绍的String,所以在程序结束时,我在Colectie.txt中的所有内容都是:/
我认为这只是一件容易的事,但无法弄清楚是什么......
修改:
好的,我确实编辑了我的代码,这就是它现在的样子:
BufferedWriter output = new BufferedWriter(new FileWriter("D:\\Programe\\NetBeans\\Proiecte NetBeans\\[PA]Tema3Ex1\\Colectie.txt"));
for (int y = 0; y < colectieTotala.size(); y++)
for (int k = 0; k < colectieTotala.get(y).size(); k++)
{
System.out.println("Element curent -> " + colectieTotala.get(y).get(k));
try
{
output.write(colectieTotala.get(y).get(k));
output.newLine();
}
catch (IOException e)
{
System.err.println(e);
}
}
现在的问题是Colectie.txt在执行之后它是空的。现在哪里出错了?
答案 0 :(得分:1)
问题是它只在文件
String
的第一行写了当前的Colectie.txt
这是因为你一直在嵌套循环中创建新文件。
将try(BufferedWriter output = ...
阻止移到嵌套循环外面以解决此问题:
BufferedWriter output = new BufferedWriter(new FileWriter("D:\\Programe\\NetBeans\\Proiecte NetBeans\\[PA]Tema3Ex1\\Colectie.txt", true));
try {
for (int y = 0; y < colectieTotala.size(); y++) {
for (int k = 0; k < colectieTotala.get(y).size(); k++) {
output.write(colectieTotala.get(y).get(k));
output.newLine();
}
}
} finally {
output.close();
}
答案 1 :(得分:0)
尝试首先将所有数据附加到StringBuffer对象中,最后将其写入文件,然后刷新BufferedWriter。
答案 2 :(得分:0)
BufferedWriter output = new BufferedWriter(new FileWriter("D:\\Programe\\NetBeans\\Proiecte NetBeans\\[PA]Tema3Ex1\\Colectie.txt", true));)
在嵌套for的
之前保留它答案 3 :(得分:0)
最好提升缓冲编写器的创建速度。否则你就是在浪费资源。
所以移动循环后面的行。
BufferedWriter output = new BufferedWriter(new FileWriter("D:\\Programe\\NetBeans\\Proiecte NetBeans\\[PA]Tema3Ex1\\Colectie.txt", true));
然后在循环体中改变写入追加如下。
output.append(colectieTotala.get(y).get(k));
output.newLine();
答案 4 :(得分:0)
您在内循环中打开和关闭文件,这意味着它会一直被覆盖。您需要在开头打开它并在结束时关闭它。
同样使用索引变量并不是非常惯用的,使用for-each construction会更加清晰:
BufferedWriter output = new BufferedWriter(new FileWriter("youtfile.txt", true));
try {
for(List<String> lst : colectieTotala) {
for(String line : lst) {
output.write(line);
output.newLine();
}
}
} finally {
output.close();
}