`

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

}

分享到:
评论

相关推荐

    commons-io-2.CHM

    apache commons-io-2.CHM帮助文档 一、FileUtils 打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下: cleanDirectory:清空目录,但不删除目录。 contentEquals:比较两个...

    java源码包---java 源码 大量 实例

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    day019-io笔记和代码.rar

    * 别人给提供了字节流,而需要处理文本文件,这时候,就需要用转换流转换一下,更方便处理文本文件 * * 作用:就是一字符流的方式读取或写出文本相关的数据 * * InputStreamReader:将字节输入流包装...

    入门学习Linux常用必会60个命令实例详解doc/txt

    mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者。 2.格式 mount -a [-fv] [-t vfstype] [-n] [-rw] [-F] device dir 3.主要参数 -h:显示辅助信息。 -v:显示信息,...

    java源码包2

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java 编写文件上传类简单易用

    用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本...

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    IO输入输出留

    IO ============================================================================================================================================= * Input /Output 输入 输出 保存文件 读取文件 java.io...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例064 字符串大小写转换 82 实例065 字符与Unicode码的转换 83 4.2 辨别字符串 84 实例066 判断用户名是否正确 84 实例067 用户名排序 85 实例068 判断网页请求与FTP请求 86 实例069 判断文件类型 87 实例070 判断...

    java源码包4

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包3

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    TCP大小写转换

    需求:建立一个文本转换服务器 客户端给服务端发送文本...既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规则来思考 源:键盘录入。 目的:网络设备,网络输出流 而且操作的是文本数据。可以选择字符流

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...

    Java 基础核心总结 +经典算法大全.rar

    关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...

    java开源包10

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包1

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

Global site tag (gtag.js) - Google Analytics