您的位置:首页 > 其它

小工具:批量转换文件夹下的特定类…

2015-10-10 09:23 162 查看
     
 网上没找到好的,于是自己用Java写了个小工具。

=======================代码的分割线=============================

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.util.ArrayList;

public class BatchCharsetConvert {

    static String
filePosfix;
    static String
nowCharset;
    static String
targetCharset;
    static
ArrayList<String> succFiles = new
ArrayList<String>();
    static
ArrayList<String> ignoreFiles = new
ArrayList<String>();
    static
ArrayList<String> failedFiles = new
ArrayList<String>();

    public static void
main(String[] args) {
     
  if (args.length != 4) {
     
     
System.err
     
     
     
  .println("Usage: java BatchCharsetConvert
[文件夹路径] [文件后缀] [当前编码] [目标编码]");
     
     
System.err
     
     
     
  .println("Example: java BatchCharsetConvert
./project/src .java GBK UTF-8");
     
     
return;
     
  }
     
  String dirPath = args[0];
     
  filePosfix = args[1];
     
  nowCharset = args[2];
     
  targetCharset = args[3];
     
  // 检查Charset
     
  try {
     
     
Charset.forName(nowCharset);
     
  } catch (Exception ex) {
     
     
System.err.println("指定的当前编码不正确:" + nowCharset);
     
     
return;
     
  }
     
  try {
     
     
Charset.forName(targetCharset);
     
  } catch (Exception ex) {
     
     
System.err.println("指定的目标编码不正确:" + targetCharset);
     
     
return;
     
  }
     
  // 遍历文件夹
     
  File dir = new File(dirPath);
     
  if (!dir.isDirectory()) {
     
     
System.err.println("指定的文件夹不正确:" + dirPath);
     
     
return;
     
  }
     
  visitAllDirsAndFiles(dir);
     
  // 打印统计结果
     
  for (String file : succFiles) {
     
     
System.out.println("转换成功:" + file);
     
  }
     
  System.out
     
     
   
.println("=======================================================");
     
  for (String file : ignoreFiles) {
     
     
System.out.println("忽略:" + file);
     
  }
     
  System.out
     
     
   
.println("=======================================================");
     
  for (String file : failedFiles) {
     
     
System.out.println("转换失败:" + file);
     
  }
     
  System.out.println("转换成功文件数:" +
succFiles.size());
     
  System.out.println("转换失败文件数:" +
failedFiles.size());
     
  System.out.println("忽略文件数:" +
ignoreFiles.size());
    }

    private static void
visitAllDirsAndFiles(File file) {
     
  if (file.isDirectory()) {
     
      String[]
children = file.list();
     
      for (int i
= 0; i < children.length; i++) {
     
     
    visitAllDirsAndFiles(new
File(file, children[i]));
     
      }
     
  } else if (file.isFile()) {
     
      if
(!file.getName().endsWith(filePosfix)) {
     
     
   
ignoreFiles.add(file.getAbsolutePath());
     
     
    return;
     
      }
     
      try
{
     
     
    // 将文件内容读取到内存中
     
     
    BufferedReader in = new
BufferedReader(new InputStreamReader(
     
     
     
      new
FileInputStream(file), nowCharset));
     
     
    StringBuilder sb = new
StringBuilder();
     
     
    try {
     
     
     
  String str;
     
     
     
  while ((str = in.readLine()) != null) {
     
     
     
     
sb.append(str + "\r\n");
     
     
     
  }
     
     
    } finally {
     
     
     
  if (in != null) {
     
     
     
      try
{
     
     
     
     
    in.close();
     
     
     
      } catch
(Exception ex) {
     
     
     
     
    // ignore
     
     
     
      }
     
     
     
  }
     
     
    }
     
     
    BufferedWriter out = new
BufferedWriter(new OutputStreamWriter(
     
     
     
      new
FileOutputStream(file), targetCharset));
     
     
    try {
     
     
     
  out.write(sb.toString());
     
     
    } finally {
     
     
     
  if (out != null) {
     
     
     
      try
{
     
     
     
     
    out.close();
     
     
     
      } catch
(Exception ex) {
     
     
     
     
    // ignore
     
     
     
      }
     
     
     
  }
     
     
    }
     
     
   
succFiles.add(file.getAbsolutePath());
     
      } catch
(Exception ex) {
     
     
   
failedFiles.add(file.getAbsolutePath());
     
      }
     
  }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: