将字符串数组的数组写入文件(txt,csv等)

时间:2014-06-20 19:09:21

标签: java arrays csv bufferedwriter

我有一个名为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;

3 个答案:

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


} 

}