Java在path末尾的两个点有意想不到的结果

Java在path末尾的两个点有意想不到的结果,第1张

概述Java在path末尾的两个点有意想不到的结果

当遇到一些file对象时,我遇到了我认为是不寻常的行为。

import java.io.file; public class MyClass { public static voID main(String[] args) { file file = new file("C:\x.."); System.out.println(file.isDirectory()); System.out.println(file.Listfiles()); } }

假设某个目录C:x存在, file.isDirectory()将返回true,并在path末尾添加两个点。 这复制了命令行中的行为,其中cd x..将目录更改为x 。

但是,在调用file.Listfiles() ,该方法返回null,只有在文件不是目录时才会发生。 这似乎与Listfiles()的定义不一致。

这是为什么? 为什么在path的末尾有两个点会出现在同一个目录下,就好像没有点?

batch file中的逗号分隔双引号stringFOR / F不起作用

使用mingw和g ++编译器

windows中应用程序图标的最佳实践

是否有可能由windowspipe理的2个窗口具有相同的窗口句柄值?

通过C ++中的迭代更新string

这个问题似乎是windows专有的。 linux正确(?)为isDirectory()返回false。

如何正确检测主窗口的拐angular半径

C#应用程序没有正确closures(表单closures后仍然在内存中运行)

模拟磁盘空间exception

在windows中将__int64转换为long

我真的需要Visual Studio吗?

windows从路径和文件名修剪尾随点。 我无法找到具体的参考,这只是那种神秘的东西之一。

它修剪完整路径中的尾部点,而不是单个组件。

因此,当“C: x …”与“C: x”相同时,“C: x …. filename”与“C: x filename”不同,因为后者没有尾随点。

您将不得不在windows上查看JDK的本机fileSystem源,以准确查看它是如何获取文件列表的,但是我怀疑它正在使用windows对“C: x .. *。*”进行某种搜索“ FindFirstfile API调用什么的,点不再落后。 换句话说,假设“C: x”是一个目录,而路径“C: x ..”是一个目录,“C: x .. *。*”什么都不匹配,而“C: x” x .. 子目录“不映射到”C: x subdirectory“。

你应该避免使用这样的路径。 我不知道你是如何获得路径字符串的第一个地方。

您可以使用file.getCanonicalPath()或file.getCanonicalfile()将其转换回更可用的路径名。

顺便说一句,如果你想有一些与windows的乐趣,请在命令提示符下键入以下命令(假设“c: windows temp”存在,否则替换为其他路径):

echo > \?c:windowstempx.

windows中的\?前缀禁用文件名处理和扩展。 现在删除生成的文件。 也尝试在资源管理器中。

扰流板:

你必须用控制台的通配符来删除它,例如del x?

你忘了在..之前添加额外的斜杠应该是c:\x\.. 这会把你指向C:的确如此

总结

以上是内存溢出为你收集整理的Java在path末尾的两个点有意想不到的结果全部内容,希望文章能够帮你解决Java在path末尾的两个点有意想不到的结果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1282867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存