Java.io/Android File()实例与实际文件系统对象,何时创建?

Java.io/Android File()实例与实际文件系统对象,何时创建?,java,android,file,io,Java,Android,File,Io,我在澄清关于Java.io.File的文档时遇到了一些麻烦 发件人: 此类的实例可能表示也可能不表示实际的文件系统对象,例如文件或目录。如果它确实表示这样一个对象,那么该对象驻留在分区中。分区是文件系统特定于操作系统的存储部分。单个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可能包含多个分区。对象(如果有)将驻留在分区上 据我所知,文件对象非常类似于指向文件系统结构中某个位置的路径/指针 关于分区的部分让我很困惑 当我打电话时: File File=new文件(getFilesDir()

我在澄清关于Java.io.File的文档时遇到了一些麻烦

发件人:

此类的实例可能表示也可能不表示实际的文件系统对象,例如文件或目录。如果它确实表示这样一个对象,那么该对象驻留在分区中。分区是文件系统特定于操作系统的存储部分。单个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可能包含多个分区。对象(如果有)将驻留在分区上

据我所知,文件对象非常类似于指向文件系统结构中某个位置的路径/指针

关于分区的部分让我很困惑

当我打电话时:

File File=new文件(getFilesDir(),“myFileName.txt”)

是否为名为“myFileName.txt”的新文件系统对象分配了新的硬盘空间块?即

内存:
文件
hats.png

调用构造函数后:

内存:或内存分区地:
文档myFileName.txt
hats.png hats.png
myFileName.txt


如果不是,这个名为“myFileName.txt”的文件系统对象是如何/何时物理创建的?

Java文件只是对文件的引用,不管它是否存在。显示的方法使用指定的目录生成新文件,同时自动包含正确的路径分隔符

您可以检查
file.exists()
,查看您正在引用的文件是否确实存在于系统中

只有打开该文件,才能创建该文件

您还可以使用
file.createNewFile()
与在命令行调用touch具有相同的效果

据我所知,文件对象非常类似于指向文件系统结构中某个位置的路径/指针

否。
文件
封装文件名。没别的了。它不必是现有文件的名称

当我打电话时:

是否为名为“myFileName.txt”的新文件系统对象分配了新的硬盘空间块

不是

如果不是,这个名为“myFileName.txt”的文件系统对象是如何/何时物理创建的

执行以下操作之一时:

  • 调用
    File.createNewFile()
    (除非您喜欢零长度文件,否则基本上不需要)
  • 文件输出流
    文件编写器
    的构造函数中使用
    文件
    ,或在
    模式
    参数中使用
    随机访问文件
  • 通过
    路径
    间接使用它来构建上述路径之一或
    文件通道
关于这一点:“此类实例可能表示也可能不表示实际的文件系统对象,如文件或目录”我认为这是指像
/proc
这样的虚拟文件系统。/proc中的“文件”不是真正的文件(磁盘上有0字节)。这些“文件”用于获取内核内外的信息。见此:
File file = new File(getFilesDir(),"myFileName.txt")