import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SearchOrReplaceKeyword { public static int count = 1;// 用于统计数量 /** * 测试 */ public static void main(String[] args) { replaceAllFile(new File("C:/Documents and Settings/Administrator/桌面/new/tract"),".xsl","@StatisticDate","@ReportStatisticDate"); replaceAllFile(new File("C:/Documents and Settings/Administrator/桌面/new/tract"), ".xsl", "<p class=\"reportdetail\">没有数据</p>", "<p class=\"reportdetail\">没有数据!</p>"); System.out.println("end"); } /** * 搜索到要查找的关键字就打印其文件名 * * @param dir:文件目录 * @param fileType:文件类型 * @param keyword:要查找的关键字,这个关键字是正则表达式的形式 */ public static void searchFile(File dir, String fileType, String keyword) { if (dir.isDirectory()) { for (File file : dir.listFiles()) { if (file.isDirectory()) { searchFile(file, fileType, keyword); } else { if (file.getName().endsWith(fileType)) { String path = getFilePath(file, keyword); if (null != path) { System.out.println(path); } } } } } } /** * 返回文件路径或null * * @param file:被查找的文件 * @param keyword:查看文件是否包含此关键字,这个关键字是正则表达式的形式 * @return */ public static String getFilePath(File file, String keyword) { BufferedReader br = null; try { // 读取文件 br = new BufferedReader(new FileReader(file)); String line = ""; while ((line = br.readLine()) != null) { //if (line.contains(keyword)) { //return file.getPath(); //} //正则表达式的方式查找所要找的内容 Pattern pattern = Pattern.compile(keyword); Matcher matcher = pattern.matcher(line); if (matcher.find()) { return file.getPath(); } } } catch (Exception e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } /** * 用新的字符串替代指定的字符串 * * @param dir:文件目录 * @param fileType:文件类型 * @param keyword:被替代的关键字 * @param newWord:替代关键字的字符串 */ public static void replaceAllFile(File dir, String fileType, String keyword, String newWord) { if (dir.isDirectory()) { for (File file : dir.listFiles()) { if (file.isDirectory()) { replaceAllFile(file, fileType, keyword, newWord); } else { if (file.getName().endsWith(fileType)) { replaceFile(file, keyword, newWord); } } } } } /** * 用新的字符串替代指定的字符串 * * @param file:文件 * @param keyword:被替代的关键字 * @param newWord:替代关键字的字符串 */ public static void replaceFile(File file, String keyword, String newWord) { // StringBuilder stringBuilder = new StringBuilder(); StringBuffer stringBuilder = new StringBuffer(""); BufferedReader br = null; BufferedWriter bw = null; boolean flag = false; try { // 读取文件 br = new BufferedReader(new FileReader(file)); String line = ""; while ((line = br.readLine()) != null) { if (line.contains(keyword)) { line = line.replaceAll(keyword, newWord); flag = true; } stringBuilder.append(line); stringBuilder.append("\n"); } if (flag) { // 写文件 bw = new BufferedWriter(new FileWriter(file)); //这里用了一个字符转换的类 bw.write(new ChangeCharest().toGBK(stringBuilder.toString())); System.out.println((count++) + "修改了" + file.getPath()); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != bw) { bw.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (null != br) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
import java.io.UnsupportedEncodingException; /** * * 转换字符串的编码 * */ public class ChangeCharest { /** *//** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */ public static final String US_ASCII = "US-ASCII"; /** *//** ISO拉丁字母表 No.1,也叫做ISO-LATIN-1 */ public static final String ISO_8859_1 = "ISO-8859-1"; /** *//** 8 位 UCS 转换格式 */ public static final String UTF_8 = "UTF-8"; /** *//** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */ public static final String UTF_16BE = "UTF-16BE"; /** *//** 16 位 UCS 转换格式,Litter Endian(最高地址存放地位字节)字节顺序 */ public static final String UTF_16LE = "UTF-16LE"; /** *//** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */ public static final String UTF_16 = "UTF-16"; /** *//** 中文超大字符集 **/ public static final String GBK = "GBK"; public static final String GB2312 = "GB2312"; /** *//** 将字符编码转换成US-ASCII码 */ public String toASCII(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, US_ASCII); } /** *//** 将字符编码转换成ISO-8859-1 */ public String toISO_8859_1(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, ISO_8859_1); } /** *//** 将字符编码转换成UTF-8 */ public String toUTF_8(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, UTF_8); } /** *//** 将字符编码转换成UTF-16BE */ public String toUTF_16BE(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, UTF_16BE); } /** *//** 将字符编码转换成UTF-16LE */ public String toUTF_16LE(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, UTF_16LE); } /** *//** 将字符编码转换成UTF-16 */ public String toUTF_16(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, UTF_16); } /** *//** 将字符编码转换成GBK */ public String toGBK(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, GBK); } /** *//** 将字符编码转换成GB2312 */ public String toGB2312(String str) throws UnsupportedEncodingException{ return this.changeCharset(str,GB2312); } /** *//** * 字符串编码转换的实现方法 * @param str 待转换的字符串 * @param newCharset 目标编码 */ public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException{ if(str != null){ //用默认字符编码解码字符串。与系统相关,中文windows默认为GB2312 byte[] bs = str.getBytes(); return new String(bs, newCharset); //用新的字符编码生成字符串 } return null; } /** *//** * 字符串编码转换的实现方法 * @param str 待转换的字符串 * @param oldCharset 源字符集 * @param newCharset 目标字符集 */ public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException{ if(str != null){ //用源字符编码解码字符串 byte[] bs = str.getBytes(oldCharset); return new String(bs, newCharset); } return null; } public static void main(String[] args) throws UnsupportedEncodingException{ ChangeCharest test = new ChangeCharest(); String str = "This is a 中文的 String!"; System.out.println("str:" + str); String gbk = test.toGBK(str); System.out.println("转换成GBK码:" + gbk); System.out.println(); String ascii = test.toASCII(str); System.out.println("转换成US-ASCII:" + ascii); System.out.println(); String iso88591 = test.toISO_8859_1(str); System.out.println("转换成ISO-8859-1码:" + iso88591); System.out.println(); gbk = test.changeCharset(iso88591, ISO_8859_1, GBK); System.out.println("再把ISO-8859-1码的字符串转换成GBK码:" + gbk); System.out.println(); String utf8 = test.toUTF_8(str); System.out.println(); System.out.println("转换成UTF-8码:" + utf8); String utf16be = test.toUTF_16BE(str); System.out.println("转换成UTF-16BE码:" + utf16be); gbk = test.changeCharset(utf16be, UTF_16BE, GBK); System.out.println("再把UTF-16BE编码的字符转换成GBK码:" + gbk); System.out.println(); String utf16le = test.toUTF_16LE(str); System.out.println("转换成UTF-16LE码:" + utf16le); gbk = test.changeCharset(utf16le, UTF_16LE, GBK); System.out.println("再把UTF-16LE编码的字符串转换成GBK码:" + gbk); System.out.println(); String utf16 = test.toUTF_16(str); System.out.println("转换成UTF-16码:" + utf16); String gb2312 = test.changeCharset(utf16, UTF_16, GB2312); System.out.println("再把UTF-16编码的字符串转换成GB2312码:" + gb2312); } }
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; //文件内容大写转小写 public class UpperToLower { public static void main(String [] args){ //contentUpperToLower(new File("D:/common2.css")); replaceAllFile(new File("D:/css"), "css"); } public static void replaceAllFile(File dir, String fileType) { if (dir.isDirectory()) { for (File file : dir.listFiles()) { if (file.isDirectory()) { replaceAllFile(file, fileType); } else { if (file.getName().endsWith(fileType)) { contentUpperToLower(file); } } } } } private static void contentUpperToLower(File file) { StringBuffer stringBuilder = new StringBuffer(""); BufferedReader br = null; BufferedWriter bw = null; // boolean flag = false; try { // 读取文件 br = new BufferedReader(new FileReader(file)); String line = ""; int count = 0; while ((line = br.readLine()) != null) { line = line.toLowerCase(); stringBuilder.append(line); stringBuilder.append("\n"); count++; } // if (flag) { // 写文件 bw = new BufferedWriter(new FileWriter(file)); //这里用了一个字符转换的类 bw.write(new ChangeCharest().toGBK(stringBuilder.toString())); System.out.println((count++) + "修改了" + file.getPath()); // } } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != bw) { bw.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (null != br) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } } }