Java 关于文件=新文件(路径)

Java 关于文件=新文件(路径),java,java-io,Java,Java Io,该文档对采用路径名的构造函数说了以下几句话: 公共文件(字符串路径名) 通过转换给定的路径名字符串来创建新的文件实例 转换为抽象路径名。如果给定的字符串是空字符串, 然后,结果是空的抽象路径名 但是如果路径名指向一个已经存在的文件怎么办 File file = new File(PATH_TO_AN_EXISTING_FILE); 上述文件实例是否表示一个新文件(删除现有文件?或它是否表示现有文件?文档说明它将创建一个新的文件实例。这意味着它将在文件类的内存中创建一个新实例 此对象将指向文件系

该文档对采用
路径名的构造函数说了以下几句话:

公共文件(字符串路径名)

通过转换给定的路径名字符串来创建新的文件实例 转换为抽象路径名。如果给定的字符串是空字符串, 然后,结果是空的抽象路径名

但是如果
路径名
指向一个已经存在的文件怎么办

File file = new File(PATH_TO_AN_EXISTING_FILE);

上述
文件
实例是否表示一个新文件(删除现有文件?它是否表示现有文件?

文档说明它将创建一个新的
文件
实例。这意味着它将在
文件
类的内存中创建一个新实例


此对象将指向文件系统上的文件。但是,如果文件存在,则不会创建新文件

java.io.File
类表示某个文件系统上的路径。它不直接绑定到文件。创建
文件
实例时,您没有打开文件

文件
对象只是堆上的一个对象。是的,它确实有一些字段和方法,这些字段和方法意味着这个对象代表一个真实的文件(或者一个目录:请参见第二部分)。 您可以为不存在的文件/目录创建
File
对象:文件系统不会发生任何变化;将创建
文件
实例。毕竟,
文件
只是一个描述符


此外,您可以创建多个具有不同路径的
File
对象(特别是当一个是绝对路径,而另一些是来自不同父路径的相对路径时),但在实际计算时,它们都将指向相同的文件/目录(通过在/OutputStream中使用
打开文件,
读写器
;检查
存在()
或创建时:
创建文件()
创建目录()

我认为文档有点混乱:在Java中创建新的
文件
对象并不意味着在文件系统中创建新文件。
文件
对象只是文件和目录路径名的抽象表示,它可能表示磁盘或网络存储上的真实文件,也可能不表示

它或多或少相当于表示某物地址的
字符串
:当您编写时

String str = "1600 Pennsylvania Ave NW, Washington, DC 20500";
您创建了一个包含现有建筑地址的字符串。您创建的字符串
str
与恰好位于该地址的白宫之间没有其他连接


使用现有路径名创建的
文件
与使用不存在的路径名创建的文件之间的唯一区别在于调用
exists()前者的
将返回
true
,而后者的相同调用将返回
false
A
文件
未直接链接到文件系统上的实际文件。如果该文件存在,它将指向该文件。如果该文件不存在,它将不会创建它。
exist()
将返回false。

这是一个名称非常混乱的类

文件
对象表示一个文件路径,而不是实际的文件。因此,当您创建一个
文件
对象时,您不会更改归档系统中的任何内容。从概念上讲,它与
字符串
没有什么不同

在java.nio中,类被重命名为(更直观的)
Path

File f=new文件(“C://Existing\u文件”)

上行表示已经存在的文件,而不是要创建的新文件。
文件类实例总是指IO操作,并且通过创建新实例总是指已经组成的文件

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

这个新的文件对象将指向系统中名为ABC.txt的文件(如果存在)。如果ABC.txt文件不存在,那么文件对象就不会指向任何文件。

我看不出进行否决表决的原因。但我稍后会更新文件的内容,我想知道现有文件是否会被新文件替换这些类型的歧义是为什么Java7具有
Path
类的一部分。