gpt4 book ai didi

带有西里尔字符的文件路径的 Java java.io.filenotfoundexception

转载 作者:太空狗 更新时间:2023-10-29 22:57:26 25 4
gpt4 key购买 nike

我有一个文件,其名称不仅包含普通 ASCII 字符集中的字符,还包含非 ASCII 字符集中的字符。在我的例子中,它包含西里尔字符。

这是我的代码片段:

String fileName = "/Users/dnelepov/Downloads/тест изображение.png";
File sendFile = new File(fileName);
if (sendFile.exists()) {
// Some code
}

sendFile.exists if block 中的代码没有被执行。

为什么无法识别文件?

我的系统配置区域设置

LANG="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_CTYPE="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_ALL="ru_RU.UTF-8"

uname -a

Darwin Dmitrys-MacBook-Pro.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64

java -version

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

更新

我发现这个错误是在 Oracle 的 JDK 上。

我在 Eclipse 上创建了项目,并找到了文件。我检查了项目属性并找到了 Mac OS 6 JDK。

然后我将其更改为 JDK 7,但再次找不到文件。

我的问题是我需要将 JDK 7 与 JavaFX 一起使用。不是 Mac 操作系统版本。所以我的问题仍然存在。

我制作了一个视频来显示这个错误 Video with error

更新 2

感谢 eumust 的回答,这段代码有效:

Path path = Paths.get("/Users/dnelepov/Downloads/test/");
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path oneF, BasicFileAttributes attrs) throws IOException {
System.out.println("FILE:" + oneF);
if (Files.exists(oneF)) {
System.out.println("EXISTS:" + oneF);
}
return FileVisitResult.CONTINUE;
}
});

https://stackoverflow.com/a/17481204/849961

最佳答案

只是为了好玩,这个 hack 可能会起作用:

String fDir = "/Users/dnelepov/Downloads/";
char[] fileName = "тест изображение.png".toCharArray();
File root = new File(fDir);
File[] folder = root.listFiles();

for (File f : folder)
if (Array.equals(fileName, f.getName().toCharArray()) {
//code here
...
}

我不知道它是否会给您带来任何不同的结果,特别是因为它可能只是文件名的一个奇怪的编码问题,但这可能有助于阐明这种情况。如果代码不执行,请在 charArray 的 int (ascii vals) 上打印目录中所有文件名——找到你要查找的那个,看看字符是如何编码的,为什么它是不相等。

关于带有西里尔字符的文件路径的 Java java.io.filenotfoundexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com