浏览 1563 次
锁定老帖子 主题:文件转换工具
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-17
最后修改:2009-04-17
出于工作中方便偷懒的原因,写了个很简单的小工具,用来把asp,html文件转换成jsp文件,并把编码转换成UTF-8。
package com.javaeye.sun2009.aspconvertjsp; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 把ASP文件扩展名转换成JSP扩展名,并把编码转换成UTF-8 * 把HTML文件编码转换成UTF-8 * @author sun2009 */ public class ConvertFile { private final Logger logger = LoggerFactory.getLogger(ConvertFile.class); /** * 缓存区大小 */ private static final int BUFFER_SIZE = 1024 * 30; /** * 文件目录 */ private File fileDirectory; /** * 输入流 */ private InputStreamReader in; /** * 输出流 */ private OutputStreamWriter out; /** * 文件过滤器 */ private MyFileFilter myFileFilter = new MyFileFilter(); /** * 构造一个File对象,指向文件目录 * @param filePath 文件目录 */ public void init(String filePath) throws NullPointerException { try { fileDirectory = new File(filePath); } catch (NullPointerException e) { logger.error("文件目录不能为空!", e); throw new NullPointerException("文件目录不能为空!"); } } /** * 执行转换 */ public void convert() { List<File> files = listFiles(fileDirectory); for (File file : files) { try { in = new InputStreamReader(new FileInputStream(file), "GB2312"); StringBuilder builder = new StringBuilder(); char[] buffer = new char[BUFFER_SIZE]; int len = -1; while ((len = in.read(buffer)) != -1) { builder.append(new String(buffer, 0, len)); } String extendName = file.getName().substring(file.getName().lastIndexOf(".")); String fileContent = builder.toString(); Pattern p = null; Matcher matcher = null; //如果不是html文件的话,就加个JSP头 if (!"html".equalsIgnoreCase(extendName) || !"htm".equalsIgnoreCase(extendName)) { p = Pattern.compile("^<%\\s*@\\s*page.*contentType=.*%>", Pattern.CASE_INSENSITIVE); matcher = p.matcher(fileContent); if (!matcher.find()) { String header = "<%@ page contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>"; fileContent = header + fileContent; } } p = Pattern.compile("gb2312", Pattern.CASE_INSENSITIVE); matcher = p.matcher(fileContent); fileContent = matcher.replaceAll("UTF-8"); p = Pattern.compile("gbk", Pattern.CASE_INSENSITIVE); matcher = p.matcher(fileContent); fileContent = matcher.replaceAll("UTF-8"); String fileName = file.getPath(); if (fileName.toLowerCase().endsWith(".asp")) { fileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".jsp"; } out = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8"); out.write(fileContent); } catch (FileNotFoundException e) { logger.error("{}文件没有找到!", e); } catch (IOException e) { logger.error("IO异常!"); System.exit(1); } finally { try { out.close(); in.close(); } catch (Exception e) { } } } } /** * 列出所有符合要求的文件 * @param directory 目录 * @return List<File> */ protected List<File> listFiles(File directory) { List<File> allFiles = new ArrayList<File>(); File[] files = directory.listFiles(myFileFilter); if (files != null && files.length > 0) { for (File file : files) { if (file.isDirectory()) { listFiles(file); } else { allFiles.add(file); } } } return allFiles; } /** * 文件过滤器<br/> * 只允许.asp、.html、.htm或.jsp结尾的文件 */ public class MyFileFilter implements FileFilter { public boolean accept(File pathName) { String fileName = pathName.getName().toLowerCase(); if (fileName.endsWith(".asp") || fileName.endsWith(".html") || fileName.endsWith(".htm") || fileName.endsWith(".jsp")) { return true; } else { return false; } } } }
调用文件 package com.javaeye.sun2009.aspconvertjsp; /** * * @author sun2009 */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { ConvertFile cf = new ConvertFile(); cf.init("C:/Documents and Settings/Administrator/桌面/service_mbm/service"); cf.convert(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |