文件名Java中的特殊字符

我试图编写一个文件名带有特殊字符的文件,例如“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();

回答:

尝试Files

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

try (

final OutputStream out = Files.newOutputStream(target, StandardOpenOption.CREATE_NEW);

) {

// write

}

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

如果确实无法创建路径,那么,您将必须找到某种逃避和撤消逃避的方法。也许写一个别名到某种数据库之类的东西。

请注意,InvalidPathException未经检查的 ;

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

以上是 文件名Java中的特殊字符 的全部内容, 来源链接: utcz.com/qa/411277.html

回到顶部