博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件转码重写到其他文件
阅读量:4314 次
发布时间:2019-06-06

本文共 2594 字,大约阅读时间需要 8 分钟。

import java.io.BufferedReader;import java.io.File;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.io.PrintWriter;public class Main {     public static void main(String[] args) {        File f1 = new File("E:\\myeclipse\\MySpace\\EducationalAdministrationSystem\\src\\com\\entity");//需要转码的GBK格式文件夹        File f2 = new File("E:\\myeclipse\\MySpace1");//转码成UTF-8的目标文件夹        try {            new Main().copyFile(f1, f2);        } catch (IOException e) {            e.printStackTrace();        }    }         private void copyFile(File f1, File f2) throws FileNotFoundException, IOException {        if(f1.isDirectory()) {            f2.mkdir();            File[] fs = f1 .listFiles();            for (File subF : fs) {                //递归遍历目录                copyFile(subF, new File(f2, subF.getName()));            }        } else if (f1.isFile() && f1.getName().endsWith(".java")) {            //对java文件进行转码            parse2UTF_8(f1, f2);        } else {            //对非java文件直接复制            copyData(f1, f2);        }    }         //复制文件    private void copyData(File f1, File f2) throws FileNotFoundException, IOException{                 FileInputStream fis = new FileInputStream(f1);        FileOutputStream fos = new FileOutputStream(f2, false);                 byte[] bytes = new byte[1024];        int temp = 0;        while (-1 != (temp = fis.read(bytes))) {            fos.write(bytes, 0, temp);        }                 fos.flush();                 if(null != fis) {            fis.close();        }        if(null != fos) {            fos.close();        }    }         /*     * 该方法引用 杰克思勒(Jacksile)的文章:Eclipse修改编码后乱码解决     *  之后作了小修改     * 原码地址 https://www.cnblogs.com/tufujie/p/5137564.html     */    private void parse2UTF_8(File file, File destFile) throws IOException {        StringBuffer msg = new StringBuffer();        // 读写对象        PrintWriter ps = new PrintWriter(new OutputStreamWriter(new FileOutputStream(destFile.getAbsolutePath(), false), "utf8"));        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file.getAbsolutePath()), "gbk"));         // 读写动作        String line = br.readLine();        while (line != null) {            msg.append(line).append("\r\n");            line = br.readLine();        }        ps.write(msg.toString());        br.close();        ps.flush();        ps.close();    }}

引用转载别人的代码,并非本人创作

转载于:https://www.cnblogs.com/myfaith-feng/p/9569315.html

你可能感兴趣的文章
Stax解析XML示例代码
查看>>
cookie
查看>>
二级图片导航菜单
查看>>
<Using parquet with impala>
查看>>
OpenGL渲染流程
查看>>
委托异步回调
查看>>
扩展欧几里得算法
查看>>
いつでもどこでも本格的に麻雀&チュートリアルが充実!iPhone/iPod touch/iPad向け「雀龍門Mobile」をiPadで遊んでみました...
查看>>
如何重置mysql中的root密码
查看>>
bzoj 3171: [Tjoi2013]循环格 最小费用最大流
查看>>
关于IO的一些数字
查看>>
高放的c++学习笔记之模板与泛型编程
查看>>
bzoj 1089: [SCOI2003]严格n元树
查看>>
mybatis 日期比较
查看>>
更新jdk
查看>>
string与StringBuilder之性能比较
查看>>
python3----练习题(购物车)
查看>>
IOS不错的学习资源特别是图片效果的处理上
查看>>
HDU 2072(字符串的流式操作,学习了)
查看>>
win10 vs2015源码编译opencv、opencv_contrib、Tesseract
查看>>