文件名java中的特殊字符

时间:2015-02-12 11:47:14

标签: java file file-writing

我正在尝试在文件名中写一个带有特殊字符的文件,例如“téééê.mp3”,但文件名始终保持为“?”而是字符“é”,我尝试了几种方法,但我没有找到解决方案:

String musicName = new String("tééé ê.mp3".getBytes(), "UTF-8");
OutputStreamWriter bw = new OutputStreamWriter(new FileOutputStream(FILE_PATH+"musics/"+musicName), "UTF-8");
bw.write(data);
bw.close();

我也是这样试过的。

OutputStreamWriter bw = new OutputStreamWriter(new FileOutputStream(URLDecoder.decode(FILE_PATH+"musics/tééé ê.mp3", "UTF-8")), "UTF-8");
bw.write(data);
bw.close();

1 个答案:

答案 0 :(得分:1)

尝试Files

final Path target = Paths.get("tééé ê.mp3");

try (
    final OutputStream out = Files.newOutputStream(target, StandardOpenOption.CREATE_NEW);
) {
    // write
}

现在,如果这是您的文件系统不支持此类文件名的问题,您将获得InvalidPathException;与File不同,新API拒绝创建最终可能无法读取的文件名。

如果你确实无法创造这条道路,那么你必须找到一种方法来逃避并在某种程度上消失;也许可以为某种数据库或其他东西写一个替代名称。

请注意InvalidPathException 取消选中;因此,您必须明确地捕获此异常。另请注意,如果JVM使用的当前字符编码不适合生成文件名,则可能会出现此异常。