2013-11-28 37 views
1

如何在Java中使用中文字符創建文件名中的文件?我已經閱讀了許多堆棧溢出的答案,但找不到合適的解決方案。我寫到現在爲止的代碼如下:在文件名中創建包含非英文字符的文件

private void writeFile(String fileContent) { 
try{ 
    File file=new File("C:/temp/你好.docx"); 
     if(file.exists()){ 
      file.delete(); 
     } 
     file.createNewFile(); 
     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(fileContent); 
     fos.close(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

該文件被寫入輸出目錄,但文件的名稱包含一些垃圾值。提前致謝。

+0

中文字符存在於Unicode中,所以不明顯,爲什麼這不起作用。你可以發佈你嘗試過的代碼示例,也許有一個異常日誌?哪個平臺(Win/Mac/Unix)和文件系統(NTFS/ext3/JFS)給你帶來麻煩? –

+0

沒有例外。該文件被創建,但具有隨機文件名。我正在使用Windows 7(NTFS)和JDK 6. –

+0

好吧,我已經低調了,並且正在輸入一個註釋,要求輸入代碼,並且您在輸入時添加了該註釋。您需要使用Unicode轉義序列:'\ uNNNN'作爲該名稱。我對這些角色並不熟悉,但我懷疑你正在遷移到UTF-32領域。 – 2013-11-28 05:32:32

回答

0

我相信關鍵是我在評論中提到的。

您可以在源代碼中使用中文字符(或其他非ascii字符)作爲文字。然而,你應該確保兩兩件事:

  1. 的編碼,你用它來保存源文件能夠代表這些字符(我的建議就是堅持使用UTF-8)
  2. -encoding參數你通過到javac應該匹配文件的編碼。 例如,如果您使用UTF-8,你的javac命令應該看起來像

    javac -encoding utf-8 Foo.java

我剛纔想了類似一塊你有代碼,它的工作原理以及在我的機器。

相關問題