用Java的I/O批量提取某一文件夹下(包括其子文件夹)所有JSP文件中的中文

    刚来公司实习,接到的第一个任务,是把一个项目中的中文,全部换成英文。这个项目是公司几年前做的,没有用到国际化,换起来相当麻烦。本来我想手工改改算了,改了一个半小时,才发现项目之巨大,JSP页面共有几百个,手工不可能完成任务。于是想到写个程序来做,毕竟曾经也学过一天的I/O

于是就有了以下代码。我用的JDK1.6的,1.5的应该也没问题,再低了就跑不起来了

主要是这个工具类:

Java代码 

1 package com.hc;  

2   

3 import java.io.BufferedReader;  

4 import java.io.File;  

5 import java.io.FileFilter;  

6 import java.io.FileInputStream;  

7 import java.io.FileNotFoundException;  

8 import java.io.InputStreamReader;  

9 import java.io.UnsupportedEncodingException;  

10 import java.util.ArrayList;  

11 import java.util.Arrays;  

12 import java.util.List;  

13   

14 public class Util {  

15   

16     // 判断一个unicode码是不是中文  

17     public static boolean isChinese(int charInt) {  

18         if (charInt > 19967 && charInt < 40870) {  

19             return true;  

20         } else {  

21             return false;  

22         }  

23     }  

24   

25     // 字节流转换成字符流,同时转换编码  

26     public static BufferedReader changeEncoding(File file)  

27             throws FileNotFoundException, UnsupportedEncodingException {  

28         FileInputStream fin = new FileInputStream(file);  

29         InputStreamReader in = new InputStreamReader(fin, "gb2312");  

30         BufferedReader br = new BufferedReader(in);  

31         return br;  

32     }  

33   

34     // 得到该文件夹,及其所有子文件夹下的所有目标文件  

35     public static List<File> getAllFiles(File file) {  

36         List<File> valueFiles = new ArrayList<File>();  

37         File[] fs = file.listFiles();  

38         for (int i = 0; i < fs.length; i++) {  

39             if (fs[i].isDirectory()) {  

40                 // 递归得到每个子文件夹下的目标文件  

41                 valueFiles.addAll(getAllFiles(fs[i]));  

42             }  

43         }  

44         // file文件夹下的目标文件放进去  

45         valueFiles.addAll(Arrays.asList(getFiles(file)));  

46         return valueFiles;  

47     }  

48   

49     // 得到一个文件夹下的目标文件,不包括子文件夹  

50     private static File[] getFiles(File file) {  

51         // 图个方便,用匿名类了  

52         FileFilter filter = new FileFilter() {  

53             String regex = "//w*//.jsp";  

54   

55             public boolean accept(File pathname) {  

56                 return pathname.getName().matches(regex);// 文件后缀为.jsp  

57             }  

58         };  

59         File[] fs = file.listFiles(filter);  

60         return fs;  

61     }  

62   

63     // 提取某一文件中的所有中文  

64     public static List<String> getChinese(File file) {  

65         try {  

66             List<String> valueList = new ArrayList<String>();  

67             BufferedReader charArrayReader = Util.changeEncoding(file);  

68             int i = -1;  

69             StringBuilder sBuilder = new StringBuilder();  

70             do {  

71                 i = charArrayReader.read();  

72                 // System.out.print((char)i);  

73   

74                 // 如果是中文  

75                 if (Util.isChinese(i)) {  

76                     sBuilder.append((char) i);  

77                 }  

78                 // 如果不是中 文  

79                 else {  

80                     // 如果是中文 后的第一个  

81                     if (sBuilder.length() > 0) {  

82                         // 把中文加进去  

83                         valueList.add(sBuilder.toString());  

84   

85                         // 清除Builder里面的中文  

86                         sBuilder.delete(0, sBuilder.length());  

87                     }  

88                     // 如果不是中文的结束,什么都不用做  

89                 }  

90             } while (i != -1);  

91             System.out.println(valueList.size());  

92             return valueList;  

93         } catch (Exception e) {  

94             // 不做异常处理  

95             return null;  

96         }  

97   

98     }  

99   

100 }  

 下面是调用:

Java代码 

101 package com.hc;  

102   

103 import java.io.File;  

104 import java.util.ArrayList;  

105 import java.util.List;  

106   

107 public class Test {  

108   

109     public static void main(String[] args) {  

110         // 该文件夹下的所有目标文件  

111         File file = new File("E:/FirstWork/rgsZS/webcontext/");  

112   

113         // 得到所有目标文件  

114         List<File> fileList = Util.getAllFiles(file);  

115         System.out.println("共有JSP文件:" + fileList.size() + "");  

116   

117         // 提取所有文件中的中文  

118         List<String> strList = new ArrayList<String>();  

119         for (File file2 : fileList) {  

120             strList.addAll(Util.getChinese(file2));  

121         }  

122   

123         //把提取出来的中文打出来  

124         for (String string : strList) {  

125             System.out.println(string);  

126         }  

127   

128     }  

129   

130 }  

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值