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();
}
}