java - 从一个文件生成多个文件

标签 java file split

我有一个文本文件(制表符分隔,行换行),有 n 列。我想将该文件拆分到第四列,并为该列的每个不同值生成一个文件。

即,如果五行具有相同的列值(例如 X ),则所有这五行都将放入 x.txt 中,依此类推。

在处理结束时,如果第四列中有 m 个不同的值,我将拥有 m 个文件。您可以假设第 4 列是“日期”类型。因此本质上需要对日期列上的数据进行分区并生成不同的文件,每个文件都有指定日期的数据。

有什么简单的方法吗?

最佳答案

简单的草稿

public static void main( String[] args) throws IOException {
    String[] input = {"A1\tB\tC\tD\t2012-02-10",
        "A2\tB\tC\tD\t2012-02-10",
        "A3\tB\tC\tD\t2012-02-08",
        "A4\tB\tC\tD\t2012-02-08",
        "A5\t\tC\tD\t2012-02-07",
        "A6\tB\tC\tD\t2012-02-07" };

    Map<String,String> map = new  HashMap<String, String>();
    for ( String row : input ) {
        String[] cols = row.split( "\t" );
        String date = cols[4];
        String content = map.get( date );
        content = (content == null) ? row : content + "\n" + row;
        map.put( date, content );
    }
    for ( String filename : map.keySet() ) {
        FileOutputStream fos = new FileOutputStream("c:\\" + filename );
        fos.write( map.get( filename ).getBytes() );
        fos.close();
    }
}

注意:您应该使用正确的行分隔符和编码。

要读取输入,您可以使用 libcsv

关于java - 从一个文件生成多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225279/

相关文章:

java - 如何将可变对象编排为跨对象的不可变对象(immutable对象)

python - 如何使用 Python 将文件格式从 Unicode 转换为 ASCII?

java - 如何从源文件夹中以 FileInputStream 形式读取图像?

java - 从 JTable 中删除正在编辑的行

c++ - MFC 先处理文件再处理文件夹

java - 使用java小程序写入文件

linux - 将文件拆分为 HDFS 中的小文件

c# - 如何在 C# 中填充数组?

r - 拆分向量并求和值

java - 使用单例模式的 jax-ws 客户端