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中创建一个对象?
答案 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目录实际上并不存在。我相信规范化更多地与操作系统命名方案有关,而不是任何实际资源 - 我不相信它甚至可以在磁盘上查看该文件是否存在。