当前位置: 首页 > 面试题库 >

文件名Java中的特殊字符

别帅
2023-03-14
问题内容

我试图编写一个文件名带有特殊字符的文件,例如“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使用的当前字符编码不适合生成文件名,则可能会出现此异常。



 类似资料:
  • 问题内容: 我正在编写一个简单的文件下载servlet,但无法获取正确的文件名。尝试使用URLEncoding和MimeEncoding在现有答案中看到的文件名,但没有一个起作用。 以下代码段中的fileData对象包含mime类型,byte []内容和文件名,它们至少需要ISO-8859-2字符集,而ISO-8859-1不够。 如何使我的浏览器正确显示下载的文件名? 这是文件名的示例:árvíz

  • 问题内容: 我在编译带有类名特殊字符的源文件时遇到问题。该类文件可以在Eclipse IDE中正常编译,但不能从javac中编译。我认为我需要利用该标志,但尚未达到正确的设置。我将不胜感激任何指针: 档案名称: DeptView和SDO.java Java资料来源: 错误信息: 运行会导致以下错误消息: 更新 我目前正在Windows XP命令提示符下尝试编译 最终,此编译将需要成为ant构建的一

  • 问题内容: 我创建了一个表,如下所示: 然后尝试插入查询: 而且由于表名称中的错误,我假设这是mysql中的特殊字符。我试图对其进行转义,但查询仍然失败。 所以,我能有特殊字符,如或在表名?如果是,那么我可能必须以某种方式对其进行编码? 谢谢。 问题答案: 用反引号引用您的含糊不清或“特殊”表名: 或者更好的是,不要在表名中使用特殊字符以避免此类问题。

  • 问题内容: 我试图用来从一些.csv文件中获取数据。只要文件名或文件路径中没有重音(例如ä,é,ü),此方法就可以正常工作。当我使用诸如这样的文件名时,出现以下错误:。我的代码是: 我正在使用pandas 0.20.1和python 3.6.0。我发现这在以前的版本中是一个问题,但我认为它已解决。有想法该怎么解决这个吗?我也发现了这个:https : //github.com/pandas- de

  • 问题内容: 如何打开Java拒绝打开的带有特殊字符的文件? 在一开始,我想这是字符集编码问题,因为我从日志文件中读取了错误的文件名。但是后来我发现,这可能是JVM的错误,我需要一种解决方法。 真实的例子胜于言语 结果 文件夹包含 问题答案: 可能与File.exists()有关吗?名称中包含Unicode字符失败