当遇到一些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末尾的两个点有意想不到的结果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)