2012-10-18 78 views
0

是否可以在不創建新實例的情況下更改java中File類的文件路徑?在java中沒有新對象實例的新文件路徑

File file = new File(System.getProperty("user.home")); <br> 
System.out.println(file.getPath()); 

回報C:\Users\username
現在我想去的父目錄。我以爲我可以使用這樣的

file.setPath(file.getParent()); 

,但我不得不使用

file = new File(file.getParent()); 

任何其他方式,我可以達到同樣的?或者,也許我可以創建多個實例,將它們存儲在一個數組中,並同時處理兩個對象(目錄)?

+2

爲什麼你關心你是否創建一個新的實例? –

回答

3

the javadocs

File類的實例是不可變的;也就是說,一旦創建,由File對象表示的抽象路徑名將永遠不會改變。

所以,不,你不能改變一個文件實例。如果你想要一個不同的值,你必須實例化一個新的文件。

+1

+1用於指出不變性 –

3

顯然,你錯過了File.getParentFile()

file = file.getParentFile(); 
+0

雖然這仍然返回一個新的實例。 – yshavit

+0

@yshavit:「* File類的實例是**不可變的***」 - 不創建新的「File」實例就無法做到這一點。 –

+0

是的,我知道 - 我剛剛發佈了一個答案,引用完全相同的位(在我看到您的評論之前,我發誓!)。但是OP的問題是,是否有可能對一個'File'進行變異,而不僅僅是如何獲得它的父親。 – yshavit