Java.iO.File文档说明了关于其构造函数的以下词语pathname
:
public File(String pathname)
通过转换给定的路径名字符串来创建新的File实例 成为一个抽象的路径名。如果给定的字符串是空字符串, 然后结果是空的抽象路径名。
但如果pathname
指向已存在的文件,该怎么办?
File file = new File(PATH_TO_AN_EXISTING_FILE);
以上file
实例是否代表一个全新的文件(现有文件会被删除?)或它是否代表现有文件?
答案 0 :(得分:4)
文档说明它将创建一个新的File
实例。这意味着它将在File
类的内存中创建一个新实例。
此对象将指向您文件系统上的文件。但是,如果文件存在,则不会创建新文件。
答案 1 :(得分:2)
我认为文档有点令人困惑:在Java中创建新的File
对象并不意味着在文件系统中创建新文件。 File
对象只是文件和目录路径名的抽象表示,它可能代表也可能不代表磁盘或网络存储上的真实文件。
它或多或少等同于表示某事物地址的String
:当你写
String str = "1600 Pennsylvania Ave NW, Washington, DC 20500";
您创建一个包含现有建筑物地址的字符串。您创建的字符串str
与恰好位于该地址的白宫之间没有其他连接。
使用现有路径名创建的File
与使用不存在的路径名创建的文件之间的唯一区别是,exists()
对前者的调用将返回true
,虽然后面的同一个电话会返回false
。
答案 2 :(得分:1)
File
未直接链接到文件系统上的实际文件。如果文件存在,它将指向该文件。如果该文件不存在,则不会创建该文件。 exist()
将返回false。
答案 3 :(得分:0)
java.io.File
类表示某个文件系统上的路径。它不直接绑定到文件。创建File
实例时,不打开文件。
File
对象只是堆上的一个对象。是的,它确实有字段和方法暗示这个对象代表一个真实的文件(或目录:看到歧义?)。
您可以为不存在的文件/目录创建File
个对象:文件系统不会发生任何事情;将创建File
个实例。毕竟,File
只是一个描述符。
此外,您可以创建具有不同路径的多个File
对象(特别是当一个是绝对的而其他对象来自不同的父路径时),但它们实际上都指向相同的文件/目录评估(通过打开In/OutputStream
,Reader/Writer
的文件;使用exists()
核对或创建:createFile()
,createDirectory()
。
答案 4 :(得分:0)
这是一个非常混乱的类。
File
对象代表文件路径,而不是实际文件。因此,当您创建File
对象时,您不会更改文件系统上的任何内容。从概念上讲,它与String
没有区别。
在java.nio中,该类已重命名为(更直观)Path
。
答案 5 :(得分:0)
文件f =新文件(“C:// Existing_file”)
上面的行表示已经存在的文件而不是要创建的新文件。 文件类实例始终引用IO操作,并且它始终引用已经包含的文件
答案 6 :(得分:0)
通过创建新实例
File f= new File("ABC.txt");
此文件的新对象将指向系统中名为 ABC.txt 的文件(如果存在)。如果 ABC.txt 文件不存在,则文件对象根本不会指向任何文件。