Java - 在 UNC 中未找到带有 ö 或 ü 的文件

标签 java file-io

我正在与 java.io.File 合作处理外部存储上的一些 PDF 文件。我正在加载它们,并注意到在我的日志中我收到了一些File NotFoundExceptions。我在查看异常情况时注意到一个奇怪的标志(= � 中带有 ? 的黑色方 block )UNC

这就是我制作文件的方式。如果有影响的话,我会从缓冲读取器获取字符串。

    File myPathFile
    FileReader fr = new FileReader(myPathFile);
    BufferedReader br = new BufferedReader(fr)
    String o = br.readLine();
    File f = new File(o)

我认为它与:

     File f = new File("\\test\ö\myFile.pdf"); //When the UNC looks like this it won't work. (the ö is �)
     File f2 = new File("\\test\myFile.pdf");   //This works

最佳答案

首先,它不是 URL,而是 UNC。

那么,它不是正确的 UNC,因为您忘记了一些非常重要的部分。

\\ComputerName\SharedFolder\Resource

分组位置

[\\] flag to suggest it's a UNC
[ComputerName] The name of the remote computer
[\] separator character
[SharedFolder] The shared folder name
[\Resource] The path name of the remote file

最后,您没有正确转义字符串中的特殊字符,因此您可能甚至无法离开计算机,更不用说到达您想要的地方了。

要在 Java 中输入 \,您需要知道 \ 用于表示 特殊 字符,例如 null、退格键等。因此要获得单个正常的 \,您必须输入 \\。这将是你的第一个例子。

在非 Microsoft 系统上,请记住,远程路径名可能使用 / 而不是 \,并且 / 不是转义字符,因此无需输入两次。

 File f = new File("\\\\test\\ö\\myFile.pdf");

这不起作用,因为您没有名为 ö 的共享文件夹

和你的第二个例子

 File f2 = new File("\\\\test\\myFile.pdf");

您的第二个示例不起作用,因为它缺少要打开的资源。

假设您不想离开计算机,则您丢失了本地文件名的部分内容。在 Windows 上,完整路径包含“卷名称”,通常为 C: 或类似名称。

 File f = new File("c:\\test\\myFile.pdf");

有时人们会省略卷名,在这种情况下,您需要依靠操作系统的帮助来尝试为您查找文件。一般来说,这不是一个好主意。

 File f = new File("\\test\\myFile.pdf");

但是,尽管这看起来与第二个示例类似,但它包含一个额外的正斜杠来转义正斜杠。虽然您的实际示例没有。

关于Java - 在 UNC 中未找到带有 ö 或 ü 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354208/

相关文章:

java - 运行时错误: inflating class

java - Minecraft 1.9 模组 block 渲染错误

Java - 阅读网站而不是源代码

c - 计算矩阵中行和列的最简单方法

css - 有没有办法使文件输入上的 native `browse` 按钮更大跨浏览器?

c - 调度源阅读器 - 如何检测文件结尾?

java - 如何在java web应用程序中找到入口点进行调试?

java - 为什么我无法让组合框显示我的 ArrayList?

c - 使用fopen/write时出现汉字问题

c++ - 文件重定向到程序