繁体   English   中英

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

[英]Given a pathname, how can I tell whether the object is a directory or a file using the Java File API?

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

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

  2. 测试绝对路径是否甚至导致存在某些东西? (File.exists(pathname),如果存在,则应返回布尔值true,否则应返回布尔值false)

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

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

一个相关但独立的问题:是否存在“文件”(例如.doc,.jpeg,.mpeg,.mp3,.xml,。*)无法通过isFile和isDirectory测试的文件? 如果是这样,我如何区分一个空文件夹和一个文件,该文件都不能通过isFile和isDirectory测试? 我问是因为在File类文档中,它为isFile声明了以下内容:测试此抽象路径名表示的文件是否为普通文件。 如果文件不是目录,并且满足其他与系统有关的条件,则该文件是正常的。 由Java应用程序创建的任何非目录文件都保证是普通文件。

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的Apache下议院IO具有sizeOf方法显然也可以处理目录的大小。

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

是否存在“文件”(例如.doc,.jpeg,.mpeg,.mp3,.xml,。*)无法通过isFile和isDirectory测试的文件?

不,这些都是常规文件。 如果是文件,它将通过isFile测试。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM