如果我写
File file = new File("file.txt");
在我的实际项目目录中已存在“file.txt”文件,将使用我的acutally file.txt文件,或者是否会被新创建的file.txt覆盖
File file = new File("file.txt");
背景是,我想在现有文件中阅读。
答案 0 :(得分:4)
new File("file.txt")
根本不创建文件。它只是创建一个与您提供的路径相关的File
对象。来自the documentation:
public class File
extends Object
implements Serializable, Comparable<File>
文件和目录路径名的抽象表示。
(我的重点。)
如果您想阅读该文件,可以使用File#exists
或File#canRead
查看它是否存在且可读,并实际读取您可能传递File
实例的文件进入FileReader
(字符数据)或FileInputStream
(原始数据)的构造函数。如果您调用那些构造函数来读取您无法读取的文件,您将获得IOException
或其子类之一(例如,如果找不到该文件,则为FileNotFoundException
)。
示例:
FileReader reader = null;
File file = new File("file.txt");
if (file.canRead()) {
try {
// Open the file
reader = new FileReader(file);
// ...read the file...
// Close it
reader.close();
reader = null;
}
finally {
if (reader != null) {
// An exception occurred, close the reader but don't throw a new exception
try {
reader.close();
}
catch (Exception) {
}
}
}
}
在Java 7及更高版本中,使用新的try-with-resources
statement:
File file = new File("file.txt");
if (file.canRead()) {
try (FileReader reader = new FileReader(file)) {
// Open the file
reader = new FileReader(file);
// ...read the file...
}
}
Java 7 try-with-resources
语句解决了确保读者关闭的麻烦。
答案 1 :(得分:0)
抱歉,误解了这个问题。仅创建File对象不会创建任何新文件。如果文件已经存在,则读取不会有问题,如果未找到则会抛出FileNotFoundException。
答案 2 :(得分:0)
如果文件存在,它将使用该现有文件。但是,当然,它的目的取决于您将使用的文件流(输入/输出)。