通过从arrayList中删除或添加对象来更新CSV文件

时间:2015-03-02 01:48:06

标签: java file arraylist

正如您可以从标题中看出的那样,我只想通过删除或添加ArrayList中的对象来更新文件。

我的代码非常大,你根本不需要看到它(它按预期工作)。所有你必须知道的是我有一个名为writetoFile的方法(该方法中没有任何内容,因为这是我目前所处的位置),假设每次我从arrayList添加或删除一个对象时都会调用它。我尝试过使用BufferedWriter方法,但该类没有任何可以编写对象的方法。

如果你真的需要查看我的代码,这里有一个指向pastebin的链接。 http://pastebin.com/eFXYtAw2

该文件也是CSV文件。

2 个答案:

答案 0 :(得分:0)

由于您的Product类具有自定义toString()方法,因此您应该使用PrintWriter而不是BufferedWriter,因为它有一些有趣且方便的方法,如println(),它们输出对象的字符串表示。

这样的事情:

public static void writeFile(ArrayList<Product> p, String file) throws IOException {
    PrintWriter pw = new PrintWriter(new FileWriter(file));

    for (Product pro : p){
        pw.println(pro);

        /*
        // And of course something less fancy like this would work too
        pw.println(pro.getProductName() 
            + "," + pro.getQuantity()
            + "," + pro.getPrice()
            + "," + pro.getUPC());
        */
    }
    pw.close();
}

答案 1 :(得分:0)

所以我查了一个我认为可能解决了我的问题的课程,但它确实没有(它被称为ObjectOutputStream)。当我使用它时,它从文件中删除了我的所有数据(起初我以为它确实如此,但在我的excel文件中,一些数据看起来像$%#@ $ @%12sony耳机或类似的东西,但这并没有& #39; t出现在我的实际文件中。)

这是我的writeFile()方法

public static void writeToFile(ArrayList<Product> p)
{
    try 
    {
        BufferedWriter writer = new BufferedWriter(new FileWriter("product.csv"));

        for (Product p1 : p) 
        {
            writer.write(p1.toString());
        }

        writer.close();
    } 
    catch (IOException ex) 
    {
        System.out.println("Input/Output format error");
    }
}