File(String name) - 如果已存在“name”命名文件,则还创建一个新文件?

时间:2013-12-28 16:20:02

标签: java file

如果我写

File file = new File("file.txt");

在我的实际项目目录中已存在“file.txt”文件,将使用我的acutally file.txt文件,或者是否会被新创建的file.txt覆盖

File file = new File("file.txt");

背景是,我想在现有文件中阅读。

3 个答案:

答案 0 :(得分:4)

new File("file.txt")根本不创建文件。它只是创建一个与您提供的路径相关的File对象。来自the documentation

  

public class File   
extends Object   
implements Serializable, Comparable<File>

     

文件和目录路径名抽象表示。

(我的重点。)

如果您想阅读该文件,可以使用File#existsFile#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)

如果文件存在,它将使用该现有文件。但是,当然,它的目的取决于您将使用的文件流(输入/输出)。