1. 程式人生 > >讀取txt檔案,生成csv檔案

讀取txt檔案,生成csv檔案

最近做了個小程式,要求在同文件夾下的txt檔案,處理內容之後,生成csv檔案。

  1 import java.io.*;
  2 import java.util.ArrayList;
  3 import java.util.List;
  4 
  5 public class Simplify {
  6 
  7     public static void main(String[] args) {
  8 
  9         List<String> resultList = readTxt();
 10 
 11         outCsv(resultList);
12 13 System.out.println(System.getProperty("user.dir")); 14 } 15 16 /* 處理檔案內容 */ 17 private static List<String> readTxt() { 18 19 // String fileName = Simplify.class.getClassLoader().getResource("").getPath() + "\\jacoco.txt"; 20 String fileName = System.getProperty("user.dir") + "\\jacoco.txt";
21 File file = new File(fileName); 22 BufferedReader reader = null; 23 List<String> resultList = new ArrayList<>(); 24 String[] tempStrs; 25 String[] packageClassStrs; 26 String packageClass = ""; 27 28 try { 29 reader = new
BufferedReader(new FileReader(file)); 30 String tempString; 31 // 一次讀入一行,直到讀入null為檔案結束 32 while ((tempString = reader.readLine()) != null) { 33 if (tempString.contains(" class ")) { 34 tempString = tempString.substring(tempString.indexOf("class")).replaceAll("/", "."); 35 tempStrs = tempString.split(" "); 36 packageClass = tempStrs[2]; 37 } else if (tempString.contains(" method ") && !tempString.contains("<init>()V")) { 38 tempString = tempString.substring(tempString.indexOf("method")).replaceAll("/", "."); 39 tempStrs = tempString.split(" "); 40 packageClassStrs = packageClass.split("\\."); 41 String cla = packageClassStrs[packageClassStrs.length - 1]; 42 String pac = packageClass.substring(0, packageClass.length() - cla.length() - 1); 43 resultList.add(pac + "," + cla + "," + tempStrs[1].substring(0, tempStrs[1].indexOf("("))); 44 } 45 } 46 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } finally { 50 if (reader != null) { 51 try { 52 reader.close(); 53 } catch (IOException e1) { 54 e1.printStackTrace(); 55 } 56 } 57 } 58 return resultList; 59 } 60 61 /* 輸出csv檔案 */ 62 private static void outCsv(List<String> resultList) { 63 64 FileOutputStream out = null; 65 OutputStreamWriter osw = null; 66 BufferedWriter bfw = null; 67 68 String fileName = System.getProperty("user.dir") + "\\jacoco.csv"; 69 // String fileName = Simplify.class.getClassLoader().getResource("").getPath() + "\\jacoco.csv"; 70 try { 71 out = new FileOutputStream(fileName); 72 osw = new OutputStreamWriter(out, "UTF8"); 73 bfw = new BufferedWriter(osw, 1024); 74 75 if (resultList != null && !resultList.isEmpty()) { 76 for (String result : resultList) { 77 bfw.write(result + "\r\n"); 78 } 79 } 80 bfw.flush(); 81 82 } catch (Exception e) { 83 e.printStackTrace(); 84 } finally { 85 try { 86 if (out != null) { 87 out.close(); 88 } 89 if (osw != null) { 90 osw.close(); 91 } 92 if (bfw != null) { 93 bfw.close(); 94 } 95 } catch (IOException e1) { 96 e1.printStackTrace(); 97 } 98 } 99 } 100 }
System.getProperty("user.dir")相對路徑的取法