Java 带分隔符的CSV

Java 带分隔符的CSV,java,csv,hive,Java,Csv,Hive,代码i如下所示,基本上将unicode字符作为\u0001处理,并将其用作分隔符。还可以使用csv库生成csv import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.stream.Collector

代码i如下所示,基本上将unicode字符作为\u0001处理,并将其用作分隔符。还可以使用csv库生成csv

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TestCsv {
    private static final String CSV_FILE_NAME = "hive_out.csv";
    private static String delimiter = "\u0001";

    public static void main(String[] args) throws IOException{
        List<String[]> dataLines = new ArrayList<>();
        dataLines.add(new String[]
                { "John", "Doe", "38", "Manager" });
        dataLines.add(new String[]
                { "Jane", "Doe", "40", "CTO" });
        dataLines.add(new String[]
                { "Mark", "Smith", "42", "CFO" });
        createCsv(dataLines,CSV_FILE_NAME);
    }


    public  static void createCsv(List<String[]> dataLines,String fileName) throws IOException {
        File csvOutputFile = new File(fileName);

        try (PrintWriter pw = new PrintWriter(csvOutputFile, "UTF-8")) {
            dataLines.stream()
                    .map(TestCsv::convertToCSV)
                    .forEach(line -> pw.println(line));
        }
    }



    public static String convertToCSV(String[] data) {
        return Stream.of(data)
                .collect(Collectors.joining(delimiter));
    }
}
代码i如下所示,基本上将unicode字符作为\u0001处理,并将其用作分隔符。还可以使用csv库生成csv

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TestCsv {
    private static final String CSV_FILE_NAME = "hive_out.csv";
    private static String delimiter = "\u0001";

    public static void main(String[] args) throws IOException{
        List<String[]> dataLines = new ArrayList<>();
        dataLines.add(new String[]
                { "John", "Doe", "38", "Manager" });
        dataLines.add(new String[]
                { "Jane", "Doe", "40", "CTO" });
        dataLines.add(new String[]
                { "Mark", "Smith", "42", "CFO" });
        createCsv(dataLines,CSV_FILE_NAME);
    }


    public  static void createCsv(List<String[]> dataLines,String fileName) throws IOException {
        File csvOutputFile = new File(fileName);

        try (PrintWriter pw = new PrintWriter(csvOutputFile, "UTF-8")) {
            dataLines.stream()
                    .map(TestCsv::convertToCSV)
                    .forEach(line -> pw.println(line));
        }
    }



    public static String convertToCSV(String[] data) {
        return Stream.of(data)
                .collect(Collectors.joining(delimiter));
    }
}
导入java.io.File;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.nio.charset.charset;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.stream;
公共类TestCsv{
私有静态最终字符串CSV\u FILE\u NAME=“hive\u out.CSV”;
专用静态字符串分隔符=“\u0001”;
公共静态void main(字符串[]args)引发IOException{
List dataLines=new ArrayList();
dataLines.add(新字符串[])
{“约翰”、“能源部”、“38”、“经理”});
dataLines.add(新字符串[])
{“Jane”、“Doe”、“40”、“CTO”});
dataLines.add(新字符串[])
{“马克”、“史密斯”、“42”、“首席财务官”});
createCsv(数据线、CSV文件名);
}
公共静态void createCsv(列表数据行、字符串文件名)引发IOException{
文件csvOutputFile=新文件(文件名);
try(PrintWriter pw=新的PrintWriter(csvoutput文件,“UTF-8”)){
dataLines.stream()
.map(TestCsv::convertToCSV)
.forEach(行->打印行);
}
}
公共静态字符串CONVERTOCSV(字符串[]数据){
返回流.of(数据)
.collect(收集器.连接(分隔符));
}
}
导入java.io.File;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.nio.charset.charset;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.stream.collector;
导入java.util.stream.stream;
公共类TestCsv{
私有静态最终字符串CSV\u FILE\u NAME=“hive\u out.CSV”;
专用静态字符串分隔符=“\u0001”;
公共静态void main(字符串[]args)引发IOException{
List dataLines=new ArrayList();
dataLines.add(新字符串[])
{“约翰”、“能源部”、“38”、“经理”});
dataLines.add(新字符串[])
{“Jane”、“Doe”、“40”、“CTO”});
dataLines.add(新字符串[])
{“马克”、“史密斯”、“42”、“首席财务官”});
createCsv(数据线、CSV文件名);
}
公共静态void createCsv(列表数据行、字符串文件名)引发IOException{
文件csvOutputFile=新文件(文件名);
try(PrintWriter pw=新的PrintWriter(csvoutput文件,“UTF-8”)){
dataLines.stream()
.map(TestCsv::convertToCSV)
.forEach(行->打印行);
}
}
公共静态字符串CONVERTOCSV(字符串[]数据){
返回流.of(数据)
.collect(收集器.连接(分隔符));
}
}

这里的问题是什么?啊!是 啊这是怎么回事?我不明白