如果我想稍后写信,我可以将文件设为最终版吗?

时间:2014-09-14 04:24:08

标签: java file io final

是否可以创建一个File类型的对象,我后来想写入它,有一个最终声明?我想将它传递给Runnable内部班级。

4 个答案:

答案 0 :(得分:3)

final声明允许您写入/读入,但不能更改对象的引用。

final File fileRef = new File("/path/to/my/file.txt");
fileRef = new File("/new/path/to/file"); // illegal

答案 1 :(得分:2)

没有问题,final并不意味着对象本身无法改变其状态。它只是意味着不能重新分配变量。所以它适用于不同的东西。

除此之外,File只是文件系统文件或文件夹的抽象表示。您没有通过File对象进行书写,而是使用它来打开流(例如FileWriter)。

答案 2 :(得分:2)

是。创建变量final意味着您无法将其更改为指向其他对象。但是,你可以完全按照它所指向的对象做任何你想做的事。

final File file = new File("foo");

Runnable r = new Runnable() {
    public void run() {
        file.renameTo("bar");    // Cool.
        file.delete();           // Cool.
        file = new File("bar");  // Whoa. Not cool.
    }
};

答案 3 :(得分:1)

来自File类的对象是来自真实硬盘的文件或目录的抽象表示。它不是物理文件或文件夹。

如果您将变量标记为final,则无法重新分配。就这样。将变量标记为final不会使物理文件不可变。如果将Runnable创建为匿名类,并且File变量是方法(参数或局部变量)的本地变量,那么是。否则,没有。