Java 类 File 有 4 个构造函数:
文件(文件父,字符串子)
从父抽象路径名创建一个新的 File 实例,并且 子路径名字符串。文件(字符串路径名)
通过转换给定的路径名字符串创建一个新的 File 实例 进入抽象路径名。文件(字符串父,字符串子)
从父路径名字符串和一个 子路径名字符串。文件(URI uri)
通过将给定文件:URI 转换为来创建一个新的 File 实例 抽象路径名。
当我这样做时:
File f=new File("myfile.txt");
是否在磁盘上创建了一个物理文件?或者 JVM 是否调用操作系统,或者这是否只在 JVM 内部创建一个对象?
最佳答案
不,创建一个新的 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 目录实际上并不存在。我相信规范化更多地与操作系统命名方案有关,而不是任何实际资源 - 我不相信它甚至在磁盘上查看文件是否存在。
关于java - 创建一个 File 对象会创建一个物理文件还是触及 JVM 之外的任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279845/