【发布时间】:2012-01-28 17:54:12
【问题描述】:
我想检查给定的字符串是文件还是目录,我尝试了 File 类的 isFile() 和 isDirectory() 方法,但问题是如果目录或文件不是存在这些方法返回 false,因为如 javadoc 中所述:
isFile():
当且仅当此抽象路径名表示的文件存在时为真 并且是普通文件;否则为假
isDirectory():
当且仅当此抽象路径名表示的文件存在时为真 并且是一个目录;否则为假
基本上我需要两个没有exist子句的方法 ...
所以我想在多平台上下文中测试给定的字符串是否符合目录格式或符合文件格式(因此,应该适用于 Windows、Linux 和 Mac Os X)。
是否存在提供这些方法的库?这些方法的最佳实现是什么?
更新
如果字符串可以是两者(不带扩展名),则默认情况下应将其标识为目录,如果具有该路径的文件不存在。
【问题讨论】:
-
Apache commons.io 可以帮助您。也许使用 FileUtils.sizeof() 或类似的东西......
-
Java 如何知道指向不存在的东西的路径名是文件还是目录,如果那里什么都没有?没有路径名格式来确定某个东西是跨所有操作系统的文件还是目录。
-
你想要的是不可能的,文件和目录之间没有区别,除非它实际存在于文件系统中(并且具有操作系统提供的必要属性)扩展等可能只是你自己的假设。旁注:现在也不存在扩展,它是来自 DOS 的一个古老的、古老的工件。
标签: java file file-exists