创建File对象是创建物理文件还是触摸JVM外部的任何内容?

时间:2011-09-02 06:18:38

标签: java file jvm

Java类File有4个构造函数:

  • File(File parent, String child)
          从父抽象路径名创建一个新的File实例 子路径名字符串。

  • File(String pathname)
          通过转换给定的路径名​​字符串来创建新的File实例 到一个抽象的路径名。

  • File(String parent, String child)
          从父路径名字符串和a创建一个新的File实例 子路径名字符串。

  • File(URI uri)       通过将给定文件:URI转换为来创建新的File实例 一个抽象的路径名。

当我这样做时:

File f=new File("myfile.txt");

磁盘上的物理文件是否已创建?或者JVM是否调用OS,或者只在JVM中创建一个对象?

1 个答案:

答案 0 :(得分:6)

不,创建新的File对象在文件系统上创建文件。特别是,您可以创建引用不存在的路径(甚至Windows上的驱动器)的File个对象。

构造函数要求底层文件系统表示在可能的情况下执行某种规范化操作,但要求文件存在。作为规范化的示例,请考虑在Windows上运行此代码:

File f = new File("c:\\a/b\\c/d.txt");
System.out.println(f);

打印

c:\a\b\c\d.txt

显示正斜杠已经规范化为反斜杠 - 但a,b和c目录实际上并不存在。我相信规范化更多地与操作系统命名方案有关,而不是任何实际资源 - 我不相信它甚至可以在磁盘上查看该文件是否存在。