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

时间:2016-09-10 00:31:42

标签: java android file io

我在澄清Java.io.File周围的文档方面遇到了一些麻烦。

来自Android docs

  

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

据我所知,File对象很像是指向文件系统结构中某个位置的路径/指针。

关于分区的一点让我很困惑,

我打电话的时候:

File file = new File(getFilesDir(),"myFileName.txt")

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

Memory: Documents hats.png

调用构造函数后:

Memory: OR Memory Partition Land: Documents Documents myFileName.txt hats.png hats.png myFileName.txt

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

2 个答案:

答案 0 :(得分:1)

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

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

在您打开文件之前,文件不会被创建。

您还可以使用file.createNewFile();,其效果与在命令行中调用touch相同。

答案 1 :(得分:0)

  

据我所知,File对象很像是指向文件系统结构中某个位置的路径/指针。

没有。 File封装文件名称。而已。它不必是现有文件的名称。

  

我打电话的时候:

File file = new File(getFilesDir(),"myFileName.txt")
  

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

  

如果没有这个/文件系统对象名为“myFileName.txt”的方式是什么/何时被物理创建?

执行以下操作之一时:

  • 调用File.createNewFile()(除非您喜欢零长度文件,否则几乎没有必要)
  • FileFileOutputStream的构造函数中使用FileWriter,或在RandomAccessFile参数中使用w mode
  • 通过Path间接使用它构建上述内容之一或FileChannel