我想将一个对象写入CSV文件。对于XML,我们有XStream的像这样 所以,如果我想转换对象CSV我们是否有任何这样的图书馆吗?
编辑: 我想将我的Bean列表传递给应该将Bean的所有字段都写入CSV的方法。
首先,序列化是将对象“按原样”写入文件。AFAIK,您不能选择文件格式和全部。序列化的对象(在文件中)具有自己的“文件格式”
如果要将对象(或对象列表)的内容写入CSV文件,则可以自己完成,这并不复杂。
看起来Java CSV库可以做到这一点,但是我自己还没有尝试过。
编辑 :请参阅以下示例。这绝不是万无一失的,但是您可以在此基础上构建。
//European countries use ";" as //CSV separator because "," is their digit separator private static final String CSV_SEPARATOR = ","; private static void writeToCSV(ArrayList<Product> productList) { try { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("products.csv"), "UTF-8")); for (Product product : productList) { StringBuffer oneLine = new StringBuffer(); oneLine.append(product.getId() <=0 ? "" : product.getId()); oneLine.append(CSV_SEPARATOR); oneLine.append(product.getName().trim().length() == 0? "" : product.getName()); oneLine.append(CSV_SEPARATOR); oneLine.append(product.getCostPrice() < 0 ? "" : product.getCostPrice()); oneLine.append(CSV_SEPARATOR); oneLine.append(product.isVatApplicable() ? "Yes" : "No"); bw.write(oneLine.toString()); bw.newLine(); } bw.flush(); bw.close(); } catch (UnsupportedEncodingException e) {} catch (FileNotFoundException e){} catch (IOException e){} }
这是产品(为便于阅读,隐藏了获取器和设置器):
class Product { private long id; private String name; private double costPrice; private boolean vatApplicable; }
这就是我测试的方式:
public static void main(String[] args) { ArrayList<Product> productList = new ArrayList<Product>(); productList.add(new Product(1, "Pen", 2.00, false)); productList.add(new Product(2, "TV", 300, true)); productList.add(new Product(3, "iPhone", 500, true)); writeToCSV(productList); }
希望这可以帮助。
干杯。