-1

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

代码 i 如下所示,基本上将 unicode char 处理为 \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));
    }
}
4

1 回答 1

0
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));
    }
}
于 2020-09-18T15:35:31.653 回答