我想要做的是将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中的每个元素添加一个新行?
答案 0 :(得分:3)
除了你的代码明显错误之外:
你必须记住,一个简单的作家不会神奇地附加换行符,你可以将它包装在一个println()中,就像System.out
一样,或者你可以像另一个回答建议那样(即)添加手动换行。
但是出于跨平台原因,我建议:
writer.write(str + System.getProperty("line.separator"));
答案 1 :(得分:1)
将FileWriter
换成BufferedWriter
。 Javadoc。 FileWriter
具有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.