用java-io查找包含关键字的文件或用某些字符替代掉指定的字符,大小写转换

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

}

你可能感兴趣的:(java,windows,正则表达式,XSL)