【问题标题】:How to use substring to split a filename and generate a .csv file with Java?如何使用子字符串拆分文件名并使用 Java 生成 .csv 文件?
【发布时间】:2018-08-07 15:27:48
【问题描述】:

我有一个包含数千个文件的文件夹,我从中提取文件名并将它们导出到.csv 文件。文件名包含 4 条信息,我需要将它们放在导出的 .csv 文件中的 3 个不同列中。

我已经用 Java 编写了一些代码,它在某些时候对我有用,只是跳过了文件名中的一些信息。

这是我写的代码:

package PR;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

public class PR {

public static void main(String[] args) throws IOException {

        final File folder = new File("./pack");

           PrintWriter pw = new PrintWriter(new File("results.csv"));

           for (final File fileEntry : folder.listFiles()) {
            if (!fileEntry.isDirectory()) { 
                String filename = fileEntry.getName();


                String date = filename.substring(0, 17);
                System.out.println(date);

                int index = filename.indexOf("_", 18);
                String pack = filename.substring(18,index);
                System.out.println(pack);


                int index2 = filename.indexOf("_", index+2);
                String dir = filename.substring(index+4, index2);
                System.out.println(dir);


                String last = filename.substring(index2 + 1, filename.indexOf('.', index2 + 1));
                System.out.println(last);
                System.out.println(fileEntry.getName());

                StringBuilder sb = new StringBuilder();
                sb.append(date);
                sb.append(",");
                sb.append(pack);
                sb.append(",");                 
                sb.append(dir); 
                sb.append(",");
                sb.append(last + "\n");
                pw.write(sb.toString());
            }
        }
        pw.close();

我的文件名如下:

20180731020925524_nr37188r2_02_Hi78-red-out

我想要的输出 .csv 文件是这样的:

20180731020925524,nr37188r2,02,Hi78-red-out

有没有人可以帮我解决这个问题?

【问题讨论】:

    标签: java csv filenames


    【解决方案1】:

    您可以使用String.replace() 方法简单地将下划线替换为逗号(如果这些是您的分隔符)。 see here

    public static void main(String[] args) throws IOException {
        final File folder = new File("./pack");
        PrintWriter pw = new PrintWriter(new File("results.csv"));
    
        for (final File fileEntry : folder.listFiles())
            if (!fileEntry.isDirectory())
                pw.println(fileEntry.getName().replace('_', ','));
        pw.close();
    }
    

    【讨论】:

    • 非常感谢,这就像一个魅力,它真的很快解决了
    猜你喜欢
    • 2017-12-09
    • 2017-02-21
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多