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));