如何编写List <list <string>&gt;的内容?到一个文件,换行符上的每个字符串?</list <string>

时间:2015-03-08 07:56:45

标签: java

过去半小时我一直在尝试这个,但我能想到的只有以下几点:

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在执行之后它是空的。现在哪里出错了?

5 个答案:

答案 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();
}