File类的使用

熟练的使用关于流的这些类是非常有必要的,因为能够大大减少重复代码的编写工作量。

  1 package com.sinosoft.lis.bjbs.tasks.zhaoyongqiang;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileNotFoundException;
  7 import java.io.IOException;
  8 import java.io.InputStreamReader;
  9 import java.io.UnsupportedEncodingException;
 10 
 11 import com.f1j.chart.sp;
 12 import com.sinosoft.lis.pubfun.PubFun;
 13 
 14 /**
 15  * 练习使用File类
 16  * 
 17  * @author maye
 18  * 
 19  */
 20 public class FilePractise {
 21     private String mCurrentDate = PubFun.getCurrentDate();
 22     private String mCurrentTime = PubFun.getCurrentTime();
 23 
 24     /**
 25      * 根据java实体类,生成对应的sql语句, 如果实体类中Date类型,自动转换成系统的当前日期 String filePath :实体类文件的路径
 26      * 介绍:为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率。
 27      * BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度
 28      * InputStreamReader类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符
 29      * FileInputStream流被称为文件字节输入流,意思指对文件数据以字节的形式进行读取操作如读取图片视频等
 30      */
 31     private void makeSQL(String filePath) {
 32         File tFile = new File(filePath);
 33         BufferedReader tBufferedReader = null;
 34         try {
 35             tBufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(tFile), "UTF-8"));// 这里要抛出异常
 36             String message = "";
 37             String mStr = "";
 38             StringBuffer tStringBuffer = new StringBuffer();
 39             tStringBuffer.append(" select ");
 40             while (true) {
 41                 message = tBufferedReader.readLine();// 这里也要抛出异常
 42                 if (message.contains("private")) {
 43                     String tDataType = message.trim().split("\\s+")[1].replace(";", ""); // 注意:\\s表示的以空格进行划分
 44                     if ("Date".equals(tDataType)) {
 45                         mStr = "'\"+mCurrentDate+\"',";
 46 
 47                     } else {
 48                         mStr = "'1',";
 49                     }
 50                     tStringBuffer.append(mStr);
 51                 }
 52                 if (message.contains("数据库表的字段个数")) {
 53                     break;
 54                 }
 55 
 56             }
 57             tStringBuffer.deleteCharAt(tStringBuffer.length() - 1);// 删除最后拼接上去的逗号
 58             tStringBuffer.append(" from dual");
 59             System.out.println(tStringBuffer.toString());
 60             System.out.println("@@@@@@" + tStringBuffer.toString());
 61         } catch (UnsupportedEncodingException e) {
 62             // TODO Auto-generated catch block
 63             e.printStackTrace();
 64         } catch (FileNotFoundException e) {
 65             // TODO Auto-generated catch block
 66             e.printStackTrace();
 67         } catch (IOException e) {
 68             // TODO Auto-generated catch block
 69             e.printStackTrace();
 70         }
 71     }
 72 
 73     /**
 74      * 根据Schema生成依附SSRS的Set代码
 75      * 
 76      * @param filePath
 77      *            schema文件的路径
 78      */
 79     private void makeCode(String filePath) {
 80 
 81         File tFile = new File(filePath);
 82         String tFileName = filePath.substring(filePath.lastIndexOf("\\") + 1, filePath.indexOf(".java"));
 83         BufferedReader tBufferReader = null;
 84 
 85         try {
 86             tBufferReader = new BufferedReader(new InputStreamReader(new FileInputStream(tFile), "UTF-8"));// 需要抛出异常
 87             String message = "";
 88             int tIndex = 1;
 89             String tString = "";
 90             while (true) {
 91                 message = tBufferReader.readLine();// 一行一行的读取文件中的内容
 92                 if (message.contains("private")) {
 93                     String tFieldName = message.trim().split("\\s+")[2].replace(";", "");// 类似于:private
 94                                                                                             // String
 95                                                                                             // contNo;
 96                                                                                             // 获取的是conNo
 97                     tString = "tSSRS.GetText(i," + tIndex + ")";
 98                     System.out.println("t" + tFileName + ".set" + tFieldName + "(" + tString + ");");
 99                     tIndex++;
100                 }
101                 if (message.contains("数据库表的字段个数")) {
102                     break;
103                 }
104             }
105         } catch (UnsupportedEncodingException e) {
106             // TODO Auto-generated catch block
107             e.printStackTrace();
108         } catch (FileNotFoundException e) {
109             // TODO Auto-generated catch block
110             e.printStackTrace();
111         } catch (IOException e) {
112             // TODO Auto-generated catch block
113             e.printStackTrace();
114         }
115     }
116 
117     public static void main(String[] args) {
118         // String str="aaa  sss   bbb";
119         // String replace = str.trim().split("\\a+")[1].replace("a", "");
120         // System.out.println(">>>>>>>>>>>>"+replace);
121         // String string="11|22||";
122         // String[] split = string.split("\\|");
123         // for(int i=0;i<split.length;i++){
124         // System.out.println("数组中的参数分别是:"+split[i]+"-");
125         // }
126         // System.out.println("数组的长度是:"+split.length);
127         // String str="private String contNo";
128         // String replace = str.trim().split("\\s+")[1].replace(";", "");
129         // String[] split = str.trim().split("\\s+");
130         // for(int i=0;i<split.length;i++){
131         // System.out.println("数组中的参数分别是:"+split[i]+"-");
132         // }
133         // System.out.println("下标为1的参数是:"+split[1].replace(";", ""));
134         // System.out.println(">>>>>>>>>"+replace);
135         // System.out.println("\\s+");
136         //
137 
138         /*
139          * new
140          * FilePractise().makeSQL("C:\\yangguang\\source\\gbs\\sinosoft-lis\\" +
141          * "sinosoft-lis-schema\\src\\main\\java\\com\\sinosoft\\lis\\schema\\"
142          * + "T_CIS_BLAENT_BACKTRACKSchema.java");
143          */
144         new FilePractise().makeCode("C:\\yangguang\\source\\gbs\\sinosoft-lis\\" + "sinosoft-lis-schema\\src\\main\\java\\com\\sinosoft\\lis\\schema\\" + "T_CIS_BLAENT_BACKTRACKSchema.java");
145 
146     }
147 }

 最终的运行结果:

 1 tT_CIS_BLAENT_BACKTRACKSchema.setBackid(tSSRS.GetText(i,1));
 2 tT_CIS_BLAENT_BACKTRACKSchema.setEntityid(tSSRS.GetText(i,2));
 3 tT_CIS_BLAENT_BACKTRACKSchema.setName(tSSRS.GetText(i,3));
 4 tT_CIS_BLAENT_BACKTRACKSchema.setIdtype(tSSRS.GetText(i,4));
 5 tT_CIS_BLAENT_BACKTRACKSchema.setIdno(tSSRS.GetText(i,5));
 6 tT_CIS_BLAENT_BACKTRACKSchema.setAppntno(tSSRS.GetText(i,6));
 7 tT_CIS_BLAENT_BACKTRACKSchema.setAppntname(tSSRS.GetText(i,7));
 8 tT_CIS_BLAENT_BACKTRACKSchema.setAppntidtype(tSSRS.GetText(i,8));
 9 tT_CIS_BLAENT_BACKTRACKSchema.setAppntidno(tSSRS.GetText(i,9));
10 tT_CIS_BLAENT_BACKTRACKSchema.setCoretype(tSSRS.GetText(i,10));
11 tT_CIS_BLAENT_BACKTRACKSchema.setDatasources(tSSRS.GetText(i,11));
12 tT_CIS_BLAENT_BACKTRACKSchema.setBacker(tSSRS.GetText(i,12));
13 tT_CIS_BLAENT_BACKTRACKSchema.setBacktime(tSSRS.GetText(i,13));
14 tT_CIS_BLAENT_BACKTRACKSchema.setChecker(tSSRS.GetText(i,14));
15 tT_CIS_BLAENT_BACKTRACKSchema.setChecktime(tSSRS.GetText(i,15));
16 tT_CIS_BLAENT_BACKTRACKSchema.setCheckflag(tSSRS.GetText(i,16));
17 tT_CIS_BLAENT_BACKTRACKSchema.setCheckresult(tSSRS.GetText(i,17));
18 tT_CIS_BLAENT_BACKTRACKSchema.setSpare1(tSSRS.GetText(i,18));
19 tT_CIS_BLAENT_BACKTRACKSchema.setSpare2(tSSRS.GetText(i,19));
原文地址:https://www.cnblogs.com/dongyaotou/p/11460147.html