我如何从ArrayList写入文件,从一个新行中的ArrayList中的每个元素?

时间:2014-02-17 12:34:48

标签: java file arraylist

我想要做的是将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);

一旦代码运行,文件就会正确创建,但它只能在一行中创建wholw ArrayLIst。怎么可以为ArrayList中的每个元素添加一个新行?

4 个答案:

答案 0 :(得分:3)

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

  • 未遵循命名惯例
  • 流未在finally {}
  • 中关闭
  • ...

你必须记住,一个简单的作家不会神奇地附加换行符,你可以将它包装在一个println()中,就像System.out一样,或者你可以像另一个回答建议那样(即)添加手动换行。

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

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

答案 1 :(得分:1)

FileWriter换成BufferedWriterJavadocFileWriter具有newLine()方法。

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

答案 2 :(得分:0)

如果你真的想以简单的方式使用它,可以使用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

答案 3 :(得分:0)

解决方案:

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.