首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#Tablesaw #Java导出为csv时,表会缩减为列表的最后一个元素

#Tablesaw #Java导出为csv时,表会缩减为列表的最后一个元素
EN

Stack Overflow用户
提问于 2020-04-07 22:56:42
回答 1查看 271关注 0票数 1

我自学Java,我正在尝试做一些工作上的程序。正如标题中所示,该表看起来很好。但是当我导出到Csv时,只保存了最后一个元素。

我一定是在什么地方弄错了。我们将非常感谢您的帮助。

代码语言:javascript
复制
    public void listInsideFolder(String nomFile) throws Exception {
    File file = new File(nomFile);
    File[] listOfFiles = file.listFiles();

    List<String> Adresses = new ArrayList<>();
    List<String> Names = new ArrayList<>();

    for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
            Adresses.add(listOfFiles[i].getAbsolutePath());
            Names.add(listOfFiles[i].getName());
            }

        StringColumn column0 = StringColumn.create("Names", Names);
        StringColumn column1 = StringColumn.create("Addresses",Adresses);

        Table t = Table.create();

        t.addColumns(column0);
        t.addColumns(column1);

      // System.out.println(t);
       // System.out.println(column0);
        // System.out.println(Names);

        t.write().csv("C:\\Users\\user\\Desktop\\Dossier\\Floweriest.csv");

        Adresses.clear();
        Names.clear();
        t.clear();
        column0.clear();
        column1.clear();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 21:59:52

您的CSV文件在每次迭代中都会被覆盖,就像@fantaghirocco建议的那样。

我不完全清楚你想要做什么。如果您希望每个迭代都有一个单独的输出文件,则需要为循环中的每个迭代提供一个新的文件名。

如果您试图使用来自所有其他文件的数据生成一个CSV输出文件,则需要在循环之外设置表等等。如下所示:

代码语言:javascript
复制
public void listInsideFolder(String nomFile) throws Exception {

    File file = new File(nomFile);
    File[] listOfFiles = file.listFiles();

    List<String> Adresses = new ArrayList<>();
    List<String> Names = new ArrayList<>();

    for (int i = 0; i < listOfFiles.length; i++) {
        if (listOfFiles[i].isFile()) {
            Adresses.add(listOfFiles[i].getAbsolutePath());
            Names.add(listOfFiles[i].getName());
        }
    }

    StringColumn column0 = StringColumn.create("Names", Names);
    StringColumn column1 = StringColumn.create("Addresses",Adresses);

    Table t = Table.create();

    t.addColumns(column0);
    t.addColumns(column1);

    t.write().csv("C:\\Users\\user\\Desktop\\Dossier\\Floweriest.csv");
}

如果这就是您要做的,您还可以跳过列表,在循环之前创建表,然后使用.append()方法将结果直接添加到列中。

最后,还有几个小问题。Adresses拼写错误,在Java中,我们几乎从不大写变量名,只使用Class、Enum和Interface名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61082982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档