Java generation of CSV file garble solution sample Java exported CSV garble

  • 2020-04-01 02:51:28
  • OfStack


import java.io.File;
import java.io.IOException;
import java.util.List;
import com.google.common.base.Charsets;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.io.Files;
import com.google.common.primitives.Bytes;
public class FooUtilsCsvHelper {
 // csv's default delemiter is ','
 private final static String DEFAULT_DELIMITER = ",";
 // Mark a new line
 private final static String DEFAULT_END = "rn";
 // If you do not want a UTF-8 ,just replace the byte array.
 private final static byte commonCsvHead[] = { (byte) 0xEF, (byte) 0xBB,
   (byte) 0xBF };
 
 public static void writeCsv(List<List<String>> source) throws IOException {
  // Aoid java.lang.NullPointerException
  Preconditions.checkNotNull(source);
  StringBuilder sbBuilder = new StringBuilder();
  for (List<String> list : source) {
   sbBuilder.append(Joiner.on(DEFAULT_DELIMITER).join(list)).append(
     DEFAULT_END);
  }
  Files.write(Bytes.concat(commonCsvHead,
    sbBuilder.toString().getBytes(Charsets.UTF_8.toString())),
    new File("d:\/123.csv"));
 }
 
 public static void readCsv(File file) throws IOException {
  System.out.println(Files.readFirstLine(file, Charsets.UTF_8));
 }
 // Run a small test yourself.
 public static void main(String[] args) throws IOException {
  List<List<String>> source = Lists.newArrayList();
  List<String> tmpL = Lists.newArrayList();
  tmpL.add(" test titile1");
  tmpL.add(" test titile2");
  source.add(tmpL);
  writeCsv(source);
  readCsv(new File("d:\/123.csv"));
 }
}


Related articles: