2013-11-28 38 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

我刚才想了类似一块你有代码,它的工作原理以及在我的机器。

相关问题