我有一个名为NewArray的字符串数组Arraylist。
ArrayList<String[]> NewArray = new ArrayList<String[]>();
NewArray中的数据看起来有点像
[Vial1,Dest1]
[Vial2,Dest1]
[Vial3,Dest2]
[Vial4,Dest2]
我想将此格式(不带括号)保存到CSV /文本文件(带标题)。理想的输出格式为:
VialNo,DestinationNo (these are the headers)
Vial1,Dest1
Vial2,Dest1
Vial3,Dest2
Vial4,Dest2
如何使用FileWriter之类的东西在txt / CSV文件中获取所需的输出?
我尝试过像
这样的事情FileWriter writer = new FileWriter("output.txt");
for(String[] str: NewArray) {
writer.write(str);
}
writer.close();
但是我得到了错误&#34; OutputStreamWriter类型中的方法write(int)不适用于参数(String [])&#34;
答案 0 :(得分:2)
public static void main(String[] args) throws Exception {
// initialize
ArrayList<String[]> list = new ArrayList<String[]>();
list.add(new String[] {"Vial1","Dest1"});
list.add(new String[] {"Vial2","Dest2"});
list.add(new String[] {"Vial3","Dest3"});
list.add(new String[] {"Vial4","Dest4"});
// writer
FileWriter writer = new FileWriter("output.txt");
// headers
writer.write("VialNo,DestinationNo\n");
writer.flush();
// data
for(String[] arr: list) {
String appender = "";
for(String s : arr){
writer.write(appender + s);
appender = ",";
}
writer.write("\n");
writer.flush();
}
writer.close();
}
这给了我输出
VialNo,DestinationNo
Vial1,Dest1
Vial2,Dest2
Vial3,Dest3
Vial4,Dest4
您需要遍历每个数组中的每个字符串,而不是尝试简单地打印出数组。我还使用appender将文件格式化为csv。
更新了包含创建标题的代码
答案 1 :(得分:0)
我建议你遍历你的数组并总是写一行。最好让你的作家使用,所以你不必费心关闭和冲洗Streams,Writers等。 如果你真的想要保存对象而不是只写下数组的内容,那么看一下将对象输出为xml的序列化程序,你可以将它保存到文件中并通过反序列化加载。
答案 2 :(得分:0)
如果接受的答案对某人不起作用(对我来说没有用)。试试吧 特定类类型的ArrayList示例ArrayList tester = new ArrayList();
公共类PassDataToFile {
public static void main(String[] args) throws IOException {
try {
RSSFeedParser parser = new RSSFeedParser("http://feeds.reuters.com/reuters/technologysectorNews");
Feed feed = parser.readFeed();
String input = "C:\\Users\\Special\\workspace\\demo.txt";
File newFile = new File(input);
if (!newFile.exists()){
newFile.createNewFile();
}
FileWriter writer = new FileWriter(newFile.getAbsoluteFile());
int sx = feed.getMessages().size();
for (int i = 0; i < sx; i++) {
writer.write(feed.getMessages().get(i).toString() + "\n");
}
writer.close();
System.out.println("File successfully written into " + input);
} catch (IOException e) {
System.out.println("File writing operation failed ");
e.printStackTrace();
}
}
}