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

Китайские символы существуют в Юникоде, поэтому неясно, почему это не сработает. Можете ли вы опубликовать образец кода того, что вы пробовали, возможно, с журналом исключений? Какая платформа (Win/Mac/Unix) и файловая система (NTFS/ext3/JFS) дают вам проблемы? –

+0

Исключений нет. Файл создается, но со случайным именем файла. Я работаю с Windows 7 (NTFS) и JDK 6. –

+0

Ну, я ниспроверг и набрал комментарий с запросом кода, и вы добавили его во время ввода. Вам нужно использовать escape-последовательности Unicode: '\ uNNNN' для этого имени. Я не знаком с этими персонажами, но я подозреваю, что вы переходите на территорию UTF-32. –

ответ

0

Я считаю, что ключ является тем, что я упомянул в комментарии.

В качестве литералов в исходном коде вы можете иметь иероглифы (или другие символы не-ascii). Однако вы должны убедиться, что две вещей:

  1. при кодировании используется, чтобы сохранить исходный файл может представлять тот характер (Мое предложение просто придерживаться UTF-8)
  2. Параметра -encoding переданных до javac должно соответствовать кодировке файла. Например, если вы используете UTF-8, ваша команда Javac должна выглядеть

    javac -encoding utf-8 Foo.java

Я только попробовал подобный кусок кода у вас есть, и это хорошо работает в моей машине.