批量转换文件字符集(批量转换文件格式代码)

  本篇文章为你整理了批量转换文件字符集(批量转换文件格式代码)的详细内容,包含有批量转换文本格式 批量转换文件格式代码 批量转换文件类型 文件批量转换编码为utf-8 批量转换文件字符集,希望能帮助你了解 批量转换文件字符集。

  如果输出路径的目录不存在,则就会进行交互,是否创建该目录,如果不创建就退出程序

  再是选择字符集转换的类型,是全部文件默认使用同一套字符集转换,还是一个一个文件的设置字符集类型转换

  接着运行即可
 

  

import java.io.*;

 

  import java.util.ArrayList;

  import java.util.List;

  import java.util.Scanner;

  public class charsetConversion {

   public static void main(String[] args) throws IOException {

   //输入路径

   String inputPath = "C:\\Users\\hhhhh\\Desktop\\data";

   //输出路径

   String outputPath = "C:\\Users\\hhhhh\\Desktop\\data_out";

   File output = new File(outputPath);

   if (!output.exists()){

   System.out.println("指定的目录不存在是否要创建它? y/n:");

   Scanner scanner = new Scanner(System.in);

   String YN = scanner.next();

   //如果输入y或Y九创建,否则不创建并退出程序

   if (YN.equalsIgnoreCase("y")){

   output.mkdir();

   }else {

   System.exit(-1);

   String charset1=null;

   String charset2=null;

   System.out.println("要指定默认字符集吗? y/n");

   Scanner yn = new Scanner(System.in);

   String YN = yn.next();

   //如果输入y或Y九创建,否则不创建并退出程序

   if (YN.equalsIgnoreCase("y")){

   System.out.print("原字符集:");

   Scanner scanner1 = new Scanner(System.in);

   charset1 = scanner1.nextLine();

   System.out.print("\n要转换为:");

   Scanner scanner2 = new Scanner(System.in);

   charset2 = scanner2.nextLine();

   //创建输入路径的File对象作为ergodic()方法的参数,用于遍历输入路径中要复制的文件。

   File input = new File(inputPath);

   //List,用于储存输入路径中的所有File对象。

   List File list = new ArrayList ();

   ergodic(input,list);

   //将输入路径中的File对象,安装相应的路径复制到输出路径中,例如(A\a1\a2\a.txt -- B\a1\a2\a.txt)

   for (File f:list){

   if (charset1!=null charset2!=null){

   createFile(f,inputPath,outputPath,charset1,charset2);

   }else {

   createFile(f,inputPath,outputPath);

   用来判断当前File(文件或目录)是否存在,如果不存在就创建它,如果是文件则在创建后写入转换后的内容

   public static void createFile(File file,String inputPath,String outputPath,String... charset) throws IOException {

   //对输入路径的文件路径做处理 例如输入路径为:input\a1\a2\a.txt

   //获取输入路径文件与指定目录的相对路径, 获取:a1\a2\a.txt

   String output = file.getPath().substring(inputPath.length()+1);

   //用于拼接输出路径

   StringBuilder sb = new StringBuilder();

   //切割 例如:上一步获取到 a1\a2\a.txt ,就需要对目录a1、a2进行判断是否存在,然后创建目录,否则会报错:找不到指定系统位置

   String[] str = output.split("\\\\");

   //拼接路径并判断是否存在,然后创建目录与文件

   for (int i=0;i str.length;i++){

   //output\a1 是否存在,不存在就创建该目录;output\a1\a2是否存在,不存在就创建......

   sb.append("\\").append(str[i]);

   File dir = new File(outputPath+sb);

   System.out.println(dir.getPath());

   if (dir.exists()){

   System.out.println("existed");

   }else {

   //如果是有后缀名的文件,就创建文件并写进内容

   if (str[i].contains(".")){

   dir.createNewFile();

   //写出内容

   if (charset.length==2){

   //如果传入了字符集参数就默认全部以此为标准

   outputWriterByte(file,dir,charset[0],charset[1]);

   }else {

   //如果没有,就挨个输入字符集

   outputWriterByte(file,dir);

   System.out.println("Create a file"+dir.getPath());

   }else {

   dir.mkdir();

   System.out.println("Create a directory"+dir.getPath());

  遍历输入路径中,需要被转换的文件,并将它们(File对象)储存在由用户提供的Liset File 对象的ergodicResult里。

   public static List File ergodic(File file, List File ergodicResult) {

   File[] files = file.listFiles();

   if (files == null){

   return ergodicResult;

   for (File f : files) {

   if (f.isDirectory()) {

   ergodic(f, ergodicResult);

   } else

   ergodicResult.add(f);

   return ergodicResult;

  普通的转换流,添加了缓冲流优化。

   public static void outputWriterByte(File input,File output,String... charset){

   FileInputStream fis;

   FileOutputStream fos;

   InputStreamReader isr = null;

   OutputStreamWriter osw = null;

   BufferedOutputStream bufferedOutputStream;

   BufferedInputStream bufferedInputStream;

   try {

   fis = new FileInputStream(input);

   fos = new FileOutputStream(output);

  
bufferedInputStream = new BufferedInputStream(fis);

   bufferedOutputStream = new BufferedOutputStream(fos);

   String charsetName1;

   String charsetName2;

   if (charset.length==2){

   charsetName1=charset[0];

   charsetName2=charset[1];

   }else {

   System.out.print("转换之前的字符集:");

   Scanner scanner1 = new Scanner(System.in);

   charsetName1 = scanner1.nextLine();

   System.out.print("\n转换之后的字符集:");

   Scanner scanner2 = new Scanner(System.in);

   charsetName2 = scanner2.nextLine();

   System.out.println("---------------------------");

   isr = new InputStreamReader(bufferedInputStream, charsetName1);

   osw = new OutputStreamWriter(bufferedOutputStream,charsetName2);

   //读多少写多少

   char[] cbuf = new char[20];

   int len;

   while ((len = isr.read(cbuf)) != -1){

   osw.write(cbuf,0,len);

   } catch (IOException e) {

   throw new RuntimeException(e);

   } finally {

   try {

   if (isr!=null){

   isr.close();

   } catch (IOException e) {

   throw new RuntimeException(e);

   try {

   if (osw!=null){

   osw.close();

   } catch (IOException e) {

   throw new RuntimeException(e);

  

 

  其中的判断是否要创建的步骤如下:

  以上就是批量转换文件字符集(批量转换文件格式代码)的详细内容,想要了解更多 批量转换文件字符集的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: