java实现批量文件编码转换
public final static String SLANT_LINE="/"; /** * @param sourcePath 源文件路径 * @param targetPath 目标文件路径 * @param sourceEncoding 源文件编码 * @param targetEncoding 目标文件编码 * @throws IOException */ public static void fileEncodingSwitch(String sourcePath,String targetPath,String sourceEncoding,String targetEncoding) throws IOException { File sourceFile=new File(sourcePath); File targetFile=new File(targetPath); //源文件不存在返回 if(!sourceFile.exists()) return; //目标文件存在先删除 if(targetFile.exists()) targetFile.delete(); if(sourceFile.isDirectory()){ //创建新的目标目录 targetFile.mkdir(); File[] childFiles=sourceFile.listFiles(); for(File childFile:childFiles){ String newSourcePath=sourcePath+SLANT_LINE+childFile.getName(); String newTargetPath=targetPath+SLANT_LINE+childFile.getName(); fileEncodingSwitch(newSourcePath,newTargetPath,sourceEncoding,targetEncoding); } }else{ //创建新的目标文件 targetFile.createNewFile(); FileInputStream fileInputStream=new FileInputStream(sourceFile); InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream,sourceEncoding); FileOutputStream fileOutputStream=new FileOutputStream(targetFile); OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream,targetEncoding); int len; while ((len=inputStreamReader.read())!=-1){ outputStreamWriter.write(len); } inputStreamReader.close(); outputStreamWriter.close(); fileInputStream.close(); fileOutputStream.close(); } }