给定路径名,如何使用Java File API判断对象是目录还是文件?

时间:2013-05-04 05:54:13

标签: java

将绝对路径指定为变量String pathname,如何使用Java类文件执行以下操作?据我所知,答案在括号中,请确认。

  1. 获取文件/目录的大小? (我不确定)

  2. 测试绝对路径是否会导致存在的东西? (File.exists(pathname),如果存在,则返回布尔值true,否则返回布尔值假)

  3. 看看这是一个文件还是目录? (File.isFile(pathname),如果路径名指向文件则返回布尔值true,否则返回false.file.isDirectory(pathname),如果路径名指向目录,则返回布尔值true,否则返回false)

  4. 看到修改的最后日期? (File.lastModified(pathname),返回一个已经有转换为特定日期的方法的长号

  5. 一个相关但又独立的问题:是否存在"文件",如.doc,.jpeg,.mpeg,.mp3,.xml,。*,它们将同时失败isFile和isDirectory测试?如果是这样,我如何区分空文件夹和文件夹isFile和isDirectory测试失败的文件夹?我问,因为在File类文档中,它为isFile声明了以下内容:测试此抽象路径名表示的文件是否是普通文件。如果文件不是目录,则该文件是正常的,此外,它还满足其他系统相关标准。由Java应用程序创建的任何非目录文件都保证是普通文件。

3 个答案:

答案 0 :(得分:3)

File f = new File(path);
// Get size of file (not a directory though)
f.length();
// Check if file exists
f.exists();
// Check if file is directory
f.isDirectory();
// Check if file is file
f.isFile();
// Last modified date
f.lastModified();

参考:JavaDoc for java.io.File

如果你想要一个目录的大小,你必须在遍历你想要计算其大小的目录时组合这些方法,或者你可以在{{FileUtils中使用第三方库。 3}}它有一个Apache Commons IO方法,显然也处理目录的大小。

答案 1 :(得分:0)

  • 测试是否存在:file.exists()
  • 测试普通文件:file.isFike()
  • 我们既不是“文件”也不是目录的东西:符号链接

答案 2 :(得分:0)

  

有什么东西是“文件”,比如.doc,.jpeg,.mpeg,.mp3,.xml,。*,它们都会失败isFile和isDirectory测试吗?

没有。这些都是常规文件。如果是文件,则会通过isFile测试。

不是“普通文件”或目录的东西就像设备文件和命名管道文件。 java.io.File无法准确区分这些......或符号链接。

如果您希望能够执行特定于操作系统的操作,请查看Java 7的java.nio.file包,特别是Files类。