读取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")相对路径的取法

猜你喜欢

转载自www.cnblogs.com/CuiHongYu/p/9987429.html