在Java中使用CSV编写器时如何动态重命名CSV导出

时间:2019-04-03 11:38:04

标签: java

我有以下代码将Jtable导出为Excel csv导出。

我尝试附加文件(布尔值true),但是附加发生在同一文件本身内。

public static boolean exportToCSV(JTable table,String pathToExportTo) {

try {

    TableModel model = table.getModel();            
    FileWriter csv = new FileWriter(new File("C:/Users/user/Desktop/test.csv"));

    for (int i = 0; i < model.getColumnCount(); i++) {
        csv.write(model.getColumnName(i) + ",");
    }

    csv.write("\n");

    for (int i = 0; i < model.getRowCount(); i++) {
        for (int j = 0; j < model.getColumnCount(); j++) {
            csv.write(model.getValueAt(i, j).toString() + ",");
        }
        csv.write("\n");
    }

    csv.close();
    JOptionPane.showMessageDialog(null,"Export Successful!");
    return true;

} catch (IOException e) {
    e.printStackTrace();
    JOptionPane.showMessageDialog(null,"Error! Excel cannot be exported!");
}
return false;

这可以正常工作,但是会覆盖现有文件。我希望将其导出为其他文件,并可能将其重命名为text(1).csv

1 个答案:

答案 0 :(得分:0)

您可以使用一种方法来计算报告输出文件:

File resolveFileName(){
    String directory ="C:/Users/user/Desktop/";

    File res = new File(directory + "test.csv");
    if(!res.exists()){
        return res;
    }
    int filesInDirectoryCount = (new File(directory)).listFiles().length;
    String fileName = "test_"+filesInDirectoryCount+".csv";
    return new File(directory+fileName);
}

用法:

FileWriter csv = new FileWriter(resolveFileName);

这将基于此目录中的文件数在文件名中添加一个数。因此应该可以解决这个问题。