`
sun2009
  • 浏览: 4197 次
  • 性别: Icon_minigender_1
  • 来自: 妈妈的肚子
最近访客 更多访客>>
社区版块
存档分类
最新评论

文件转换工具

    博客分类:
  • JAVA
阅读更多

出于工作中方便偷懒的原因,写了个很简单的小工具,用来把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();
    }

}

 

 

分享到:
评论

相关推荐

    录音文件转换工具ACT录音文件转换工具

    ACT录音文件转换工具是一款专为处理ACT格式录音文件而设计的应用程序,旨在帮助用户将这些文件转换成其他更常见或兼容性更好的音频格式。在IT领域,文件转换工具扮演着重要的角色,尤其对于那些需要在不同设备或软件...

    PMW文件转换(三菱PMW程序文件转换工具)

    标题中的“PMW文件转换(三菱PMW程序文件转换工具)”指的是一个专门针对三菱PLC(可编程逻辑控制器)的程序文件格式PMW进行转换的工具。PMW是三菱公司的一种专有编程语言,用于编写控制逻辑,常用于工业自动化设备的...

    linux环境下*.deb文件转换成*.rpm文件的文件转换工具.zip

    在某些情况下,用户可能需要在不支持DEB格式的系统上安装DEB包,或者反之,这就需要用到文件转换工具。本文件提供了一个将Linux环境下的DEB文件转换为RPM文件的解决方案。 转换工具通常会包含解析DEB包结构、提取...

    资源文件转换工具(转换.Resources到.Resx文件)v1.0中文绿色免费版

    .net资源文件转换工具可以批量转换.Resources到.Resx文件,而且在转换后会根据命名空间前缀自动将.resx文件放到相应的目录下,使你反编译时省去手动敲命令的烦恼,并且自动帮你处理命名空间的事。需要的朋友们可以...

    重大更新:鼎信诺手工账 excel账数据转换工具,手工账、excel电子账导入鼎信诺-鼎信诺财务文件转换工具

    鼎信诺财务文件转换工具,是基于鼎信诺手工账模板进行二次开发而来。用于无法使用鼎信诺取数工具进行数据采集和转化,而需要使用鼎信诺审计系统的情形。 将财务系统中的数据导出:科目余额表、序时账、辅助科目余额...

    天地伟业Easy7录像文件转换工具V2.0T官方安装版

    Easy7录像文件转换工具是一款非常好用的视频文件转换工具,该工具可以帮助用户将专用的录像文件转换为常用的AVI、mp4视频文件,并且支持多种录像格式,能够自动识别录像格式,使用简单,操作方便,永久免费,欢迎有...

    REC录音文件转换工具

    本文将深入探讨“REC录音文件转换工具”,以及如何使用名为“SoundConvert 2.0”的软件将REC文件转换为MP3格式。 首先,我们要理解REC文件。REC通常是由手机内置的录音应用生成的,它存储的是未经压缩的原始音频...

    PDF文件转换工具

    Windows PDF文件转换工具,简单实用

    bin文件转bin文件转换工具

    --将原bin文件的数据以4个字节为单位进行顺序转换 运行脚本前,需要修改脚本里面的文件名: 第1步:拷贝原bin文件至该文件夹下,例如原bin文件名称为“old.bin” 第2步:修改.bat文件为:bin2bin.exe old.bin new....

    bin文件转换为C文件转换工具

    将bin文件转换成C文件的数组,以便C程序可直接调用写入SPI芯片 运行脚本前,需要修改脚本里面的文件名: 第1步:拷贝原bin文件至该文件夹下,例如原bin文件名称为“old.bin” 第2步:修改.bat文件为:bin2txt.exe ...

    KML文件转换工具

    ### KML文件转换工具知识点详解 #### 一、KML文件简介 KML(Keyhole Markup Language)是一种基于XML的标准文件格式,用于表示地理数据,可在Google Earth等地图应用程序中查看。KML文件通常用于存储地理位置信息...

    .trc文件转换工具,.trc转换为.asc工具

    本话题主要关注一个名为".trc文件转换工具"的程序,该程序能够将.trc格式转换成.ascii格式,这对于分析和理解由.trc文件存储的数据非常有帮助。".trc转换为.asc工具"的描述表明它具有实用性,可能是因为.asc文件更...

    二进制文件、文本文件转换工具

    例如,"二进制文件、文本文件转换工具"可能是用于将二进制文件的内容转化为文本格式,以便于在论坛等平台上传或共享。这种工具可能通过读取二进制文件的字节流,然后将其转换为可读的字符序列。 C#是一种广泛使用的...

    DataLoader(数据库文件转换工具)v4.8特别版

    Data Loader是一款非常专业的数据库文件转换工具,你可以通过该软件来同步、导出和导入许多常用的数据库格式数据,同时该软件还支持将MS SQL Server、CSV或MS Access转换为MySQL,可以满足你对数据库方面的一些特定...

    ICO图标文件转换工具

    ICO图标文件转换工具是一种专门用于处理ICO格式图标的软件,这种格式通常用于计算机操作系统的桌面图标、程序图标等。在Windows系统中,ICO文件能够包含多个尺寸和颜色深度的图像,以便适应不同的显示需求。本工具的...

    raw文件转换工具

    "raw文件转换工具"正是为了解决这个问题,帮助用户将RAW格式的图像文件转换成更通用、易于处理的格式,如JPEG或TIFF。 RAW文件的优势在于其丰富的色彩深度和动态范围,使得后期处理时有更多的调整空间。然而,由于...

    PO 与 MO 文件转换工具

    这里提到的“PO与MO文件转换工具”就是这样一个实用程序,它可以方便地完成这两种格式之间的转换。该工具可能具有以下功能: 1. **转换功能**:将PO文件转换为MO文件,以便于应用程序在运行时使用。 2. **反向转换*...

    CAN网络DBC文件转换工具

    "CAN网络DBC文件转换工具"是针对CAN通信中DBC文件的一种实用软件,它可以实现DBC与Excel之间的相互转换,极大地简化了数据管理和分析的过程。通过将DBC文件转换为Excel,用户可以更直观地查看和编辑CAN网络中的数据...

    FLASH文件转换工具.rar

    标题中的“FLASH文件转换工具”指的是能够处理Adobe Flash(SWF)文件的程序,它可能用于将Flash内容转换为其他格式,以便在不同平台或设备上兼容和播放。Flash是一种广泛应用于网页动画、游戏和交互式媒体的格式,...

Global site tag (gtag.js) - Google Analytics