文件名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