sun2009 发表于 2013-2-7 18:59:27

文件转换工具

出于工作中方便偷懒的原因,写了个很简单的小工具,用来把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;                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();    }} 
 
页: [1]
查看完整版本: 文件转换工具