正如您可以从标题中看出的那样,我只想通过删除或添加ArrayList中的对象来更新文件。
我的代码非常大,你根本不需要看到它(它按预期工作)。所有你必须知道的是我有一个名为writetoFile的方法(该方法中没有任何内容,因为这是我目前所处的位置),假设每次我从arrayList添加或删除一个对象时都会调用它。我尝试过使用BufferedWriter方法,但该类没有任何可以编写对象的方法。
如果你真的需要查看我的代码,这里有一个指向pastebin的链接。 http://pastebin.com/eFXYtAw2
该文件也是CSV文件。
答案 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");
}
}