前些時候需要把項目中的文本文件都從GBK編碼轉換為UTF-8編碼. 如果要手動的一個個的改, 那可費事了. 反正想學學Groovy, 就用Groovy做的轉換腳本吧.
代碼如下:
def?cfg?=?[
????src?:?'e:\\src',
????out?:?'e:\\out'
];
def?dir?=?new?File(cfg.src);
def?out_dir?=?new?File(cfg.out);
if(!out_dir.exists())?out_dir.mkdirs();
dir.eachFileRecurse{?f?->
??println?f.path
??def?out?=?"${cfg.out}\\${f.path.substring(cfg.out.length())}"
??def?of?=?new?File(out)
??if(f.isDirectory()?&&?!of.exists()){
????of.mkdirs()
??}?else?{
????if(!of.exists()){
??????of.delete();
????}
????of.createNewFile();
????byte[]?head?=?[-17,-69,-65]
????of.newOutputStream()?<<?head
????f.eachLine{?line?->
??????of.append(line+'\n','UTF-8');
????}
??}
}
在cfg中定義 輸入目錄和輸出目錄
然后遞歸的遍歷目錄中的文件, 用GKB編碼讀進來, 再用UTF-8編碼寫出去.
其中有一段
??? byte[]?head?=?[-17,-69,-65]
????of.newOutputStream()?<<?head
因為UTF-8編碼有with Signature和without Signature兩種.就是文件開頭的EF BB BF
如果你需要without Signature的就把這兩句去掉.