修改一个已有java项目的编码

修改一个已有java项目的编码(如:GBK转UTF-8)

package com.change;

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.UnsupportedEncodingException;
import java.util.Scanner;

public class Files {
   /**
    * 仅支持.java文件
    * @param args
    * @throws UnsupportedEncodingException
    * @throws IOException
    */
   public static void main(String[] args) throws UnsupportedEncodingException, IOException {
       Scanner scan = new Scanner(System.in);
       System.out.println("请输入需要改变编码格式的文件位置:");
       String str = scan.nextLine();
       File file = new File(str);
       System.out.println("文件的初始编码:");
       String bm1 = scan.nextLine();
       System.out.println("文件需要转换成的编码:");
       String bm2 = scan.nextLine();
       getAllFiles(file, bm1, bm2);
   }

   /**
    *
    * @param file 要编译的文件
    * @param bm1 文件的初始编码
    * @param bm2 文件需要转换成的编码
    * @throws FileNotFoundException 文件找不到
    * @throws UnsupportedEncodingException 编码出错
    * @throws IOException io异常
    */
   public static void getAllFiles(File file, String bm1, String bm2) throws FileNotFoundException, UnsupportedEncodingException, IOException {
       if (file.isDirectory()) {
           File[] test = file.listFiles();
           for (File test1 : test) {
               //类的名字
               String str = test1.getPath();
               if (str.endsWith(".java") & test1.isFile()) {
                   String[] s = str.split("\\.");
                   String filecope = s[0] + "cope." + s[1];
                   System.out.println(filecope);
                   File fil = new File(filecope);
                   //转格式,不能一行一行的读取,只能逐个字符的读取
                   InputStreamReader isr = new InputStreamReader(new FileInputStream(test1), bm1);
                   OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream(fil), bm2);
                   int re = -1;
                   while ((re = isr.read()) != -1) {
                       osr.write(re);
                   }
                   isr.close();
                   osr.close();
                   InputStreamReader isrr = new InputStreamReader(new FileInputStream(fil), bm2);
                   OutputStreamWriter osrw = new OutputStreamWriter(new FileOutputStream(test1), bm2);
                   int r = -1;
                   while ((r = isrr.read()) != -1) {
                       osrw.write(r);
                   }
                   isrr.close();
                   osrw.close();
                   boolean d = fil.delete();
                   System.out.println(str + "文件转换utf-8成功:" + d);
               }
               getAllFiles(test1, bm1, bm2);
           }
       }
   }
}
说明:本程序只能转换输入的目录下的.java文件编码,而不能转换其子目录下的相关.java文件编码,如果想要实现的话,需要对输入目录进行递归查询处理,欢迎大家进行完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值