【问题标题】:What the File class in java.io package represent?java.io 包中的 File 类代表什么?
【发布时间】:2017-04-10 07:35:24
【问题描述】:

我对 File 类代表什么有点困惑,因为有些人说它不是描述文件而是描述路径,javadocs 说“文件和目录路径名的抽象表示。那么,什么是正确的句子吗?

【问题讨论】:

  • 正确的句子总是文档中的句子。这句话你有什么不清楚的地方?
  • 是一个类,代表一个文件和对应的信息。
  • 什么人?谁?与 Javadoc 相比,它们的可信度如何?
  • 尝试文件(和目录路径名的抽象表示。它不是文件,只是文件在系统上的位置的表示。

标签: java file io


【解决方案1】:

考虑一下:当你创建一个 File 对象时,它可能根本不对应于硬盘上的任何东西。那时您可能会选择将其创建为目录(mkdir() 或 mkdirs())或文件,将内容流式传输到其中。

它的字符串值可以代表几乎任何东西,从简单的文件或文件夹名称、相对文件或文件夹名称。或者,它也可以代表一个绝对文件或文件夹名称,采用您的操作系统所需的格式(例如,在 Windows 上使用驱动程序字母)。

它真的应该从一开始就被称为路径。但无论如何,自 Java 7 以来就有Path 接口。现代计算机用户在说文件时指的是文档(带有内容),但根据旧的 Unix/POSIX 术语和口头禅(几十年前),“一切都是文件” ,包括实际目录。

【讨论】:

    【解决方案2】:

    它代表一个文件系统路径名(绝对或相对)。路径名可能对应于实际的文件或目录,也可能不对应。


    那么,正确的句子是什么?

    javadoc 是正确的。 javadoc 总是正确...因为它是 Java 标准类库的规范。

    (并且说File 是路径的人也是正确的。他们说的是javadoc 所说的......)


    例子:

    File dir = new File("weeble");
    System.out.println(dir.exists());  // Prints false
    dir.mkdir();                       // Assume this returns true ....
    System.out.println(dir.exists());  // Prints true
    

    一开始,File 代表一个不存在的文件系统对象的路径名。然后我们调用mkdir(),然后File代表一个确实存在的目录的路径。但是,其他一些应用程序(或该应用程序的一些其他线程)可以删除“weeble”目录,File 将再次代表一个不存在的对象的路径名。

    为了记录,没有明确表示“文件”或“目录”的 Java 类。文件系统对象的生命周期由操作系统管理,POSIX 系统调用 API 不提供将这些对象与应用程序对象联系起来的功能。因此 Java 无法做到这一点。

    【讨论】:

      【解决方案3】:

      它代表单个文件或目录。

      例如,在:

      File f = new File("/home/mytextfile.txt");
      File p = f.getParentFile()
      

      变量 f 是一个文本文件。变量 p 表示包含该文本文件的父文件夹,在本例中为 /home/。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-29
        • 2014-01-31
        • 2011-03-05
        • 2014-08-27
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        相关资源
        最近更新 更多