Java не может открыть файл с суррогатными значениями Unicode в имени файла?

Я имею дело с кодом, который выполняет различные операции ввода-вывода с файлами, и я хочу, чтобы он мог работать с международными именами файлов. Я работаю на Mac с Java 1.5, и если имя файла содержит символы Unicode, которые требуют суррогатов, JVM не может найти файл. Например, мой тестовый файл:

"草鷗外.gif" который разбивается на символы Java\u8349\uD85B\uDFF6\u9DD7\u5916.gif

Если я создаю файл с этим именем, я не могу открыть его, потому что я получаю исключение FileNotFound. Даже при использовании этого в папке, содержащей файл, произойдет сбой:

File[] files = folder.listFiles(); 
for (File file : files) {
    if (!file.exists()) {
        System.out.println("Failed to find File"); //Fails on the surrogate filename
    }
}

Большая часть кода, с которым я на самом деле имею дело, имеет вид:

FileInputStream instream = new FileInputStream(new File("草鷗外.gif"));
// operations follow

Есть ли какой-нибудь способ, которым я могу решить эту проблему, избегая имен файлов или открывая файлы по-другому?

Ответы на вопрос(4)

Ваш ответ на вопрос