`
lippeng
  • 浏览: 454909 次
  • 性别: 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  
请问,如果文件中有注释之类的无需国际化的怎么办?

相关推荐

    JSP对图片的增删改查操作(能够删掉图片文件夹下的文件)

    这涉及到文件I/O操作,使用Java的`File`类可以完成这一任务。例如,我们可以通过`File.delete()`方法来删除指定路径的文件。在JSP中,可能需要通过一个表单或按钮触发删除操作,然后在后台执行相应的Java代码。 ...

    jsp 删除文件夹包含文件

    本文将深入探讨如何在JSP(JavaServer Pages)环境下删除文件夹及其包含的所有文件,这是一个常见但复杂的任务,尤其是在处理大量数据或用户上传内容时。 ### JSP删除文件夹及其中文件的实现原理 在JSP中删除...

    java+jsp 浏览某个文件夹下图片(实现分页和浏览特效)

    java+jsp 浏览某个文件夹下图片(实现分页和浏览特效) 详情参考: http://blog.csdn.net/liangyulong419/article/details/7091011#comments

    jsp遍历文件夹下的文件的代码.docx

    假设我们有一个名为 `DisplayFile` 的Servlet,其主要功能是从服务器端获取指定目录下的所有文件和子目录,并将这些信息传递给JSP页面进行展示。 ##### 3.1 DisplayFile.java (Servlet代码) ```java import javax....

    无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl

    标题中的问题“无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl”指出,这可能是Java Web应用开发中遇到的一个常见错误,涉及到JSP(JavaServer Pages)和JSTL(Java...

    java jsp IO包 教程 新手入门

    Java I/O的体系结构可以用装饰者模式来理解,其核心类包括`InputStream`和`OutputStream`用于处理字节流,而`Reader`和`Writer`则用于处理字符流。这些类构成了Java I/O的基础框架,并可以通过一系列的装饰类来增强...

    jsp选择文件夹路径

    ### JSP中使用Struts2 File属性选择文件夹路径 #### 背景与问题描述 在实际开发过程中,我们可能会遇到这样的需求:用户需要上传一个文件夹而非单个文件。然而,在使用Struts2框架时,其内置的`file`属性只允许...

    jsp页面创建文件夹

    在jsp页面上使用javascript创建文件夹是一种常见的需求,特别是在需要在服务器端创建文件夹以存储用户上传的文件或生成的文件时。本篇文章将详细介绍如何使用jsp页面创建文件夹。 一、获取Web应用的根路径 在jsp...

    JSP批量上传,实现多文件无刷新上传(带有进度条)。

    JSP批量上传,实现多文件无刷新上传(带有进度条)。 程序加了些须的验证,目前只能上传图片。...注:所有文件保存到项目文件夹下的uplaod文件夹下,如果uplaod不存在,程序将自动创建uplaod文件夹。

    JSP多文件上传(同时上传)

    在Web开发中,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将Java代码嵌入HTML页面中,以实现服务器端的数据处理和交互功能。"JSP多文件上传"是一个常见的需求,特别是在文件分享、在线教育或文档管理...

    jsp_选择文件夹的路径

    在JSP(JavaServer Pages)环境下,有时候我们需要让用户能够选择文件夹,并获取该文件夹下的所有文件列表。这种功能通常用于文件上传、文件管理等场景。本文将详细介绍一种通过JavaScript调用Windows Shell API来...

    java网站开发结合jsp写的上传以及批量上传文件代码

    // 在服务器端开辟一个路径,建立文件夹放置文件 java.io.File myfile = new java.io.File(this.getServletContext() .getRealPath("/image")); // 如果不存在此路径 if (!myfile.exists()) { ...

    详解Java读取本地文件并显示在JSP文件中

    总而言之,Java读取本地文件并显示在JSP文件中涉及的知识点包括:文件I/O操作、异常处理、资源管理、Web应用的安全性、MVC设计模式、页面动态内容生成以及前后端交互。通过阅读本文,大家可以了解到如何将这些知识点...

    Java调用Zip类批量压缩多个文件.rar

    Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。  public class ZipDemo extends JFrame{  JFileChooser fileChooser; //文件选择器  JList fileList; //待...

    jsp文件管理器

    总的来说,"jsp文件管理器"是一个结合了JSP、Java I/O、文件操作和CMD命令执行的实用工具,展示了JSP在构建交互式Web应用程序方面的强大能力。它的设计和实现涉及到多方面的编程知识,包括前端交互、后端处理、文件...

    文件夹下的所有jsp或者其他格式文件中的中文整合到excel中

    当你做完一个中文版的项目需要去做英文版项目的时候,需要把所有中文版中的内容拿出来整合一下,那后那文件发给翻译人员,我做了个偷懒的demo,可以把所有jsp或者其他格式文件中的中文拿出来放到excel的第一列,把第...

    jsp 大文件/文件夹上传控件

    在IT行业中,文件上传是网页应用中常见的功能之一,尤其在大数据时代,处理大文件和大量文件的上传需求日益增长。"jsp 大文件/文件夹上传控件" 是一个专为解决这个问题而设计的组件,它允许用户一次性上传多个大文件...

    jsp文件的上传和下载

    在Java Web开发中,JSP(JavaServer Pages)常常用于创建动态网页,配合Servlet处理用户交互,例如文件的上传和下载。本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理...

Global site tag (gtag.js) - Google Analytics