java utf-8格式,JAVA编写文件格式转换UTF-8
情景:接到個任務,需要將某路徑下包括子目錄下的所有文件都轉換為UTF-8格式。
結果:生成FileTransfer.jar,通過批處理調用實現該功能。
沒玩過java,先把環境整好吧。
需要以下工具:
JDK安裝包:(點擊下載)
eclipse:(點擊下載)
源碼:
import info.monitorenter.cpdetector.CharsetPrinter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
public class EncodeFormatTransfer
{
public static String DefaultSrcEncodeFormat = "GBK";
public static String DefaultDestEncodeFormat = "UTF-8";
public static String UnsupportedEncodingExceptionError = "編碼格式錯誤!";
public static String FileNotFoundExceptionError = "文件不存在!";
public static String IOExceptionError = "文件讀寫錯誤!";
public static String IsUtf8File = "文件是UTF-8編碼格式!";
public static String IsNotUtf8File = "文件不是UTF-8編碼格式!";
public static String readFile(String path,String encodeFormat)
{
if((encodeFormat==null || encodeFormat.equals("")))
{
if(isUTF8File(path))
{
encodeFormat = DefaultDestEncodeFormat;
}
else
{
encodeFormat = DefaultSrcEncodeFormat;
}
}
try
{
String context = "";
InputStreamReader isr;
isr = new InputStreamReader(new FileInputStream(path),encodeFormat);
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine()) != null)
{
context += line + "\r\n";
System.out.println(line);
}
br.close();
return context;
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
System.out.println(UnsupportedEncodingExceptionError);
e.printStackTrace();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
System.out.println(FileNotFoundExceptionError);
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
System.out.println(IOExceptionError);
e.printStackTrace();
};
return "";
}
public static boolean isUTF8File(String path)
{
try
{
File file = new File(path);
CharsetPrinter detector = new CharsetPrinter();
String charset = detector.guessEncoding(file);
if(charset.equalsIgnoreCase(DefaultDestEncodeFormat))
{
System.out.println(IsUtf8File);
return true;
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(FileNotFoundExceptionError);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(IOExceptionError);
}
System.out.println(IsNotUtf8File);
return false;
}
public static String transfer(String context,String encodeFormat)
{
if(encodeFormat==null || encodeFormat.equals(""))
encodeFormat = DefaultDestEncodeFormat;
try
{
byte[] content = context.getBytes();
String result = new String(content,encodeFormat);
return result;
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
System.out.println(UnsupportedEncodingExceptionError);
e.printStackTrace();
}
return "";
}
public static void writeFile(String context,String path,String destEncode)
{
File file = new File(path);
if(file.exists())
file.delete();
BufferedWriter writer;
try
{
FileOutputStream fos = new FileOutputStream(path,true);
writer = new BufferedWriter(new OutputStreamWriter(fos, destEncode));
writer.append(context);
writer.close();
}
catch (IOException e)
{
System.out.println(IOExceptionError);
e.printStackTrace();
}
}
public static void writeFile(String context,String path)
{
File file = new File(path);
if(file.exists())
file.delete();
Writer writer;
try
{
writer = new FileWriter(file, true);
writer.append(context);
writer.close();
}
catch (IOException e)
{
System.out.println(IOExceptionError);
e.printStackTrace();
}
}
public static void transfer(String srcPath,String destPath,String srcEncode,String destEncode)
{
if(destPath==null || destPath.equals(""))
destPath = srcPath;
String context = readFile(srcPath,srcEncode);
context = transfer(context,destEncode);
writeFile(context,destPath,destEncode);
}
public static void transfer(String srcPath,String destPath,String destEncode)
{
if(true != isUTF8File(srcPath))
{
transfer(srcPath,destPath,DefaultSrcEncodeFormat,destEncode);
}
}
public static void main(String args[])
{
String path1 = args[0];
transfer(path1,path1,"UTF-8");
}
}
下載好JDK文件安裝包后,根據安裝向導不停的下一步安裝就好了,應該大家都會 ^___^
配置環境變量
3個環境變量需要配置:
JAVA_HOME ? ? ?D:\Program Files\Java\jdk1.8.0_05 (這個是JDK安裝路徑,你安裝在哪里這個就填什么路徑)
CLASSPATH ? ??%JAVA_HOME%\lib
PATH ? ? ? ? ? ? ? ? ?%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; ?(這個原來就存在,在里面新加上這兩個路徑就好了)
配置好后,在DOS命令好輸入 java -version 出現如下界面表明配置OK
前面下載好的eclipse直接解壓就可以使用了,無需安裝,雙擊打開eclipse,創建一個JAVA工程
選擇File-->New-->Project
選擇Java Project
給工程起個名字,選擇JRE8,點擊FINISH完成工程創建。
右鍵點擊SRC,New-->Class
給類起個名字,點擊FINISH完成類創建,將前面的源碼復制粘貼到源文件中。
這里面用到了3個jar包,需要下載加入工程。
cpdetector.jar
jchardet-1.0.jar
antlr.jar
加入工程方法:
選擇Libraries,點擊Add External JARs...,把選擇上面下載的3個包加入工程即可。
把JAVA源碼生成為JAR包。
右鍵點擊工程,Export
選擇JAVA下的Runnable JAR file
選擇源碼和生成jar的路徑,點擊finish就生成JAR包了。
編寫批處理:
@echo off
cd "%~dp0"
for /r %%i in (*.py) do java -jar FileTransfer.jar %%i
執行結果如下:
bat批處理文件打包成exe
打開源文件
工程-->選項
選擇工程編譯,生成exe文件。
最后生成exe文件如下:
總結
以上是生活随笔為你收集整理的java utf-8格式,JAVA编写文件格式转换UTF-8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php group by 求和,GROU
- 下一篇: 如何给h2添加php标记,如何为所有h2