`
lippeng
  • 浏览: 457725 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

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

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

主要是这个工具类:

package com.hc;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Util {

	// 判断一个unicode码是不是中文
	public static boolean isChinese(int charInt) {
		if (charInt > 19967 && charInt < 40870) {
			return true;
		} else {
			return false;
		}
	}

	// 字节流转换成字符流,同时转换编码
	public static BufferedReader changeEncoding(File file)
			throws FileNotFoundException, UnsupportedEncodingException {
		FileInputStream fin = new FileInputStream(file);
		InputStreamReader in = new InputStreamReader(fin, "gb2312");
		BufferedReader br = new BufferedReader(in);
		return br;
	}

	// 得到该文件夹,及其所有子文件夹下的所有目标文件
	public static List<File> getAllFiles(File file) {
		List<File> valueFiles = new ArrayList<File>();
		File[] fs = file.listFiles();
		for (int i = 0; i < fs.length; i++) {
			if (fs[i].isDirectory()) {
				// 递归得到每个子文件夹下的目标文件
				valueFiles.addAll(getAllFiles(fs[i]));
			}
		}
		// 把file文件夹下的目标文件放进去
		valueFiles.addAll(Arrays.asList(getFiles(file)));
		return valueFiles;
	}

	// 得到一个文件夹下的目标文件,不包括子文件夹
	private static File[] getFiles(File file) {
		// 图个方便,用匿名类了
		FileFilter filter = new FileFilter() {
			String regex = "\\w*\\.jsp";

			public boolean accept(File pathname) {
				return pathname.getName().matches(regex);// 文件后缀为.jsp
			}
		};
		File[] fs = file.listFiles(filter);
		return fs;
	}

	// 提取某一文件中的所有中文
	public static List<String> getChinese(File file) {
		try {
			List<String> valueList = new ArrayList<String>();
			BufferedReader charArrayReader = Util.changeEncoding(file);
			int i = -1;
			StringBuilder sBuilder = new StringBuilder();
			do {
				i = charArrayReader.read();
				// System.out.print((char)i);

				// 如果是中文
				if (Util.isChinese(i)) {
					sBuilder.append((char) i);
				}
				// 如果不是中 文
				else {
					// 如果是中文 后的第一个
					if (sBuilder.length() > 0) {
						// 把中文加进去
						valueList.add(sBuilder.toString());

						// 清除Builder里面的中文
						sBuilder.delete(0, sBuilder.length());
					}
					// 如果不是中文的结束,什么都不用做
				}
			} while (i != -1);
			System.out.println(valueList.size());
			return valueList;
		} catch (Exception e) {
			// 不做异常处理
			return null;
		}

	}

}

 下面是调用:

package com.hc;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		// 该文件夹下的所有目标文件
		File file = new File("E:/FirstWork/rgsZS/webcontext/");

		// 得到所有目标文件
		List<File> fileList = Util.getAllFiles(file);
		System.out.println("共有JSP文件:" + fileList.size() + "个");

		// 提取所有文件中的中文
		List<String> strList = new ArrayList<String>();
		for (File file2 : fileList) {
			strList.addAll(Util.getChinese(file2));
		}

		//把提取出来的中文打出来
		for (String string : strList) {
			System.out.println(string);
		}

	}

}
 
4
0
分享到:
评论
1 楼 young_java 2014-06-12  
请问,如果文件中有注释之类的无需国际化的怎么办?

相关推荐

    java 文件上传下载

    本文将详细介绍如何在 JSP 环境中使用此组件来实现文件上传功能。 Apache Commons FileUpload 是 Apache 软件基金会的一个开源项目,它提供了一套完整的文件上传解决方案,支持单个或批量文件上传,并且能设定文件...

    [图片动画]ttcodes JSP图片小偷 v1.0_jsp_tupian.zip

    根据压缩包内的文件名,我们可以推测这个rar文件应该包含了“ttcodes JSP图片小偷”工具的所有源代码、执行文件、文档或者示例。RAR是一种更高级的压缩格式,通常用于包含多级目录和较大的文件,以节省存储空间。 *...

    java百度收录查询源码

    3. **工作空间设置**:`workspace` 文件夹可能是开发环境中项目的工作空间,包含了源代码、配置文件、资源文件等。在这个文件夹下,我们可以找到项目的结构,包括`src`目录下的Java源代码,`WEB-INF`目录下的Web应用...

    [图片动画]ttcodes JSP图片小偷 v1.0_jsp_tupian.rar

    【压缩包子文件的文件名称列表】:仅有一个文件名“[图片动画]ttcodes JSP图片小偷 v1.0_jsp_tupian”,这很可能是该工具的源代码、可执行文件或者是包含相关文档的文件夹。用户解压后,可以找到关于如何使用该工具...

    Excel导入文档

    - **放置上传按钮**:在JSP页面中添加一个文件上传按钮,以便用户可以选择并上传文件。 - **编写JS代码**:编写JavaScript代码,与服务器端交互,实现文件上传及后续操作。其中关键步骤如下: - **文件上传**:首先...

    MyElipes的所有快捷.txt都在这儿了噢

    根据提供的文件信息,这里将详细解释与"MyElipse的所有快捷方式"相关的知识点,包括但不限于快捷键的功能、使用场景以及在开发中的实际应用。 ### MyEclipse简介 MyEclipse是基于Eclipse平台的一个插件,它为Java...

    jmeter接口测试手册.docx

    - 解压下载好的文件至指定文件夹,例如`D:\JMeter`。 - 将`...\bin\jmeter.bat`文件创建桌面快捷方式,便于快速启动JMeter。 2. **配置JDK环境变量** - 确保系统已安装JDK,并且版本至少为1.8以上。 - 设置...

    myeclipse快捷键大全

    MyEclipse是一款强大的Java集成开发环境,尤其在处理企业级应用开发时表现出色。它集成了许多快捷键,能够极大提升开发效率。以下是一些重要的MyEclipse快捷键及其功能详解: 1. **Ctrl+1**:快速修复,当代码出现...

Global site tag (gtag.js) - Google Analytics