【问题标题】:How can I write from the ArrayList to file, each element from the ArraList in a new line?如何从 ArrayList 写入文件,ArrayList 中的每个元素都在一个新行中?
【发布时间】:2014-03-16 18:14:55
【问题描述】:

我想要做的是将 ArrayList 转换为文件,然后每行使用文件行。

我的代码:

List<String> Inserts = new ArrayList<String>();
String FileToLoad = null;
.
.
.
.
FileToLoad = prpfile.properties();

System.out.println(FileToLoad);
    FileWriter writer = new FileWriter(FileToLoad);
    for (String str : Inserts) {
        writer.write(str);
    }
    writer.close();

    String QueryNewData = "LOAD DATA LOCAL INFILE '" + FileToLoad + "' INTO TABLE companies  FIELDS TERMINATED BY ',' (Name,Address,NumberDUG,post,status)";
    UpdateDatabase LoadNewData = new UpdateDatabase();
    LoadNewData.LoadQuery(QueryNewData);

一旦代码运行,文件就被正确创建了,但它在一行中创建了整个 ArrayLIst。如何为 ArrayList 中的每个元素添加一个新行?

【问题讨论】:

标签: java file arraylist


【解决方案1】:

将您的FileWriter 包装在BufferedWriter 中。 JavadocFileWriternewLine() 方法。

其他选项是使用System.lineSeparator() 编写新行,这是跨平台的。

【讨论】:

    【解决方案2】:

    除了你的代码明显的错误之外:

    • 未遵循命名约定
    • 流最终没有关闭{}
    • ...

    您必须记住,简单的编写器不会神奇地附加换行符,您可以将其包装在具有 println() 的 printwriter 中,就像System.out 一样,或者您可以按照其他答案的建议(即)添加一行手动喂食。

    但是出于跨平台的原因,我建议:

    writer.write(str + System.getProperty("line.separator"));
    

    【讨论】:

    • 谢谢,我认为这是最好的答案writer.write(str + System.getProperty("line.separator")); 只是一件事你忘了一个括号。
    【解决方案3】:

    如果你真的想比其他人建议的更简单地使用它,你可以使用 printwriter,因为它有 println() 方法,它以字符串为参数。

     PrintWriter pw = new PrintWriter(FileToLoad);
     for(int index=0;index<Inserts.size();index++)
     {
         pw.println(arrayList.get(index));       
     }
     //pw.flush(); not needed since by default its enabled
    

    【讨论】:

      【解决方案4】:

      解决方案:

      package com.test;
      
      import java.io.BufferedWriter;
      import java.io.File;
      import java.io.FileWriter;
      import java.io.IOException;
      import java.util.ArrayList;
      import java.util.List;
      
      public class CreateFileFromList {
          public static void main(String[] args) throws IOException {
              List<String> list = new ArrayList<String>();
              list.add("This is line 1.");
              list.add("This is line 2.");
              list.add("This is line 3.");
              File f = new File ("C:\\temp\\Sample.txt");
              if (!f.exists()) {
                  f.createNewFile();
              }
              FileWriter fw = new FileWriter(f.getAbsoluteFile());
              BufferedWriter bw = new BufferedWriter(fw);
      
              for(String s : list) {
                  bw.write(s + System.getProperty("line.separator")); 
              }
              bw.close();
          }
      }
      

      将在 c:\temp 目录中创建新文件 Sample.txt 以及以下内容:

      This is line 1.
      This is line 2.
      This is line 3.
      

      【讨论】:

        猜你喜欢
        • 2022-06-29
        • 1970-01-01
        • 2014-02-05
        • 2012-03-28
        • 2021-05-15
        • 2017-10-24
        • 1970-01-01
        • 2020-07-21
        • 2020-11-12
        相关资源
        最近更新 更多