`

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

    博客分类:
  • java
阅读更多
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中,`String`类提供了`equalsIgnoreCase()`方法进行不区分大小写的比较,而默认的`equals()`方法则是区分大小写的。用户可以根据需要选择合适的比较方式。 文件大小范围的设置是为了过滤掉过大或过小的文件。...

    Java IO commons-io-2.5.jar

    Java IO 还包括Filter流,可以用来装饰其他流,添加额外的功能,如缓冲、转换或加密。 二、commons-io-2.5.jar 功能 Apache Commons IO 提供的增强功能包括: 1. 文件操作:`FileUtils` 类提供了大量静态方法,用于...

    Java commons-io-2.4

    这个工具包极大地简化了与文件、流、读写操作、转换、检查和比较相关的任务,使开发者能够更加高效地处理Java中的IO问题。下面,我们将深入探讨这个库的一些关键特性和功能。 首先,`commons-io-2.4.jar`是主库文件...

    commons-io-2.4.jar包 官方免费版

    这个库提供了一系列与输入输出操作相关的实用工具类,极大地简化了Java程序员处理IO任务的复杂性。标题提到的"commons-io-2.4.jar"是这个库的一个版本,版本号为2.4,表明它是官方发布的稳定版本,对先前版本进行了...

    commons-io-2.7-bin.zip

    这个库包含了大量实用类和方法,使得在处理文件、字节流、字符流、过滤器和转换时更加便捷。"commons-io-2.7-bin.zip"是Apache Commons IO库的版本2.7的二进制分发包,它包含了编译好的Java类库供开发者直接使用。 ...

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传的两个重要库,它们在Web应用中被广泛使用。这两个库分别提供了不同的功能,但在处理文件上传时常常一起使用。 `commons-fileupload-1.2.1....

    commons-io-2.11.0-bin.zip

    在实际开发中,Apache Commons IO库极大地提高了Java程序员处理文件I/O操作的效率和代码的可读性。通过引入"commons-io-2.11.0-bin.zip"到项目中,你可以轻松地利用这些预封装的工具类,减少自己编写低级I/O代码的...

    commons-io-1.4.rar源文件及jar文件

    这个库提供了大量的工具类,扩展了Java标准库中关于I/O的功能,使得开发者在处理文件、流、字符转换、过滤器和读写操作时更加方便。在这个"commons-io-1.4.rar"压缩包中,包含了两个子文件:`commons-io-1.4-bin.zip...

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar程序文件

    Apache Commons FileUpload与Apache Commons IO是Java开发中用于处理文件上传功能的重要库。这两个库在Web应用程序中尤其常见,因为它们提供了处理HTTP请求中的多部分数据(如表单上传的文件)的便捷方法。 `...

    commons-fileupload.jar和commons-io.jar

    对于MyBatis,虽然它主要关注数据库操作,但在处理文件时,可以先利用`Commons FileUpload`和`Commons IO`将文件保存到服务器,然后再通过MyBatis的SQL语句将文件路径或其它相关信息存入数据库。 在图片处理方面,...

    commons-io-2.6.jar

    无论是在处理文件、流、数据转换还是对象序列化方面,它都能显著提高开发效率,降低代码复杂度,是Java开发者不可或缺的工具之一。在实际项目中,合理运用Apache Commons IO,能让你的代码更加简洁、健壮。

    commons-fileupload-1.3.3.jar和commons-io-2.6.jar

    在Java开发中,上传文件是一项常见的任务,而`commons-fileupload-1.3.3.jar`和`commons-io-2.6.jar`是Apache Commons项目中的两个重要库,专门用于处理HTTP请求中的文件上传功能。这两个库为开发者提供了便捷、高效...

    commons-io-2.8.0.rar

    "commons-io-2.8.0.rar"是一个包含 Commons IO 库版本2.8.0的压缩包文件,便于开发者在项目中引用和使用。 在 Commons IO 中,我们可以找到许多有用的类和方法,这些在处理文件、流、字符集转换、读写操作等方面...

    commons-io2.2包括jar包源码

    Apache Commons IO 是一个Java库,包含了大量用于处理输入/输出(I/O)操作的工具类,大大简化了在Java中进行文件、流、过滤器、读写等操作的复杂性。这个压缩包“commons-io2.2”包含了版本2.2的Apache Commons IO库...

    commons-io-2.6-src.zip

    Apache Commons IO 是一个Java库,提供了大量的实用工具类来处理输入/输出操作。这个库的主要目标是弥补Java标准库在I/O操作上的不足,...对于处理文件操作的Java应用,了解并熟练使用Apache Commons IO是十分必要的。

    commons-io所有版本(0.1-2.4).zip

    Apache Commons IO 是一个Java库,它提供了一系列实用工具类来处理输入/输出操作。这个压缩包包含从0.1版本到2.4版本的所有Apache Commons IO的发布。这些版本跨越了多个年份,反映了该库在发展过程中的功能增强、...

    java-IO流学习使用教程

    - 当需要读取或写入包含文本内容的文件时,如.txt、.properties等,使用字符流更合适,因为它能处理字符编码,避免了字节流处理文本时可能出现的乱码问题。 - 在读取时,字符流会按字符大小进行读取,不会出现半个...

    commons-io-2.8.0-bin.zip

    这个压缩包“commons-io-2.8.0-bin.zip”包含了Apache Commons IO库的版本2.8.0,这是一个广泛使用的库,尤其对于那些在Java环境中进行IO操作的开发者来说,它极大地简化了工作流程。在Java学习中,理解并掌握IO流是...

    java文件上传jar(commons-fileupload-1.2.1.jar,commons-io-2.0.1.jar)

    Apache Commons IO则是另一个强大的Java I/O工具包,它提供了大量的静态方法来处理文件、流、字符集等操作。在"commons-io-2.0.1.jar"这个版本中,它包含了多种文件操作函数,如读写文件、复制文件、移动文件、比较...

    commons-io.zip

    - `IOCase`: 用于处理大小写的敏感性,支持在文件名比较时对大小写的忽略或严格处理。 - `DirectoryWalker`: 递归遍历目录,执行指定的操作,如查找特定类型的文件。 3. **流操作** - `IOException`: 这是所有 ...

Global site tag (gtag.js) - Google Analytics