2012-10-15 248 views
2

有沒有辦法讓計算機上存在文件的完整路徑? 例如,我想要得到的文件的完整路徑的文件夾中的桌面獲取文件路徑

我試着使用:

File f = new File("help.chm"); 

    String f2=f.getAbsolutePath(); 
    f3=f3.replaceAll("\\\\","/"); 
    System.out.println("Path:"+f3); 

,但它給我的項目是這樣的路徑:

C:/Users/toshiba/Documents/NetBeansProjects/test/help.chm

雖然文件不在那裏。

+0

您正在尋找'getCanonicalPath()'。另請參閱http://stackoverflow.com/questions/1099300/whats-the-difference-between-getpath-getabsolutepath-and-getcanonicalpath順便說一下,該文件不檢查存在。 – tuergeist

+0

@GreatMajestics:windows 7 –

+0

@tuergeist:但該文件存在 –

回答

0

由於其他答案東西線不包括你的問題的路徑,這裏是我的評論:

要獲得文件的路徑,首先需要告訴你的Java程序在哪裏或如何找到它。

對於您的具體示例,您可以使用以下命令獲取桌面路徑:System.getProperty("user.home") + "/Desktop";然後您可以搜索桌面上的文件夾以查找匹配的文件名。

這裏閱讀,以瞭解如何搜索文件:docs.oracle.com/javase/tutorial/essential/io/find.html

0

File是文件路徑,不一定在磁盤上存在的文件的表示 - 即,文件不必在磁盤上存在一個File對象爲不null

這就是爲什麼有File.exists()方法。

+0

好吧,但我想獲得該文件的正確路徑,它位於桌面 –

2

如果您創建一個使用filenew File("filename")relative path,你不能使用file.getAbsolutePath()文件的絕對路徑,因爲相對路徑是按照默認的用戶主目錄或JVM路徑建立。

看看Java Doc: -

的路徑名,無論是抽象的或以字符串形式,可以是絕對 或相對的。絕對路徑名是完整的,因爲不需要其他 信息來查找它所表示的文件。

相對而言,相對路徑名必須根據 來解釋來自某個其他路徑名的信息。默認情況下,java.io包中的類 始終針對當前用戶目錄解析相對路徑名。此目錄由系統屬性 user.dir命名,通常是調用Java虛擬機器的目錄。

因此,要獲得absolute path這種情況下,你實際上必須自己寫路徑。獲取absolute path,直到您保存file的目錄爲止,然後將file name添加到該目錄中。

+0

感謝您回覆 –

0

路徑「的help.chm」將相對於從中啓動的JVM,而你的情況似乎是C:/Users/toshiba/Documents/NetBeansProjects/test/

爲了得到一個路徑到桌面的目錄,你需要使用絕對在Windows桌面目錄,這將是沿着C:/Users/toshiba/Desktop/help.chm

+0

你的意思是我必須寫的路徑? –

+0

感謝您的支持 –

0

您正試圖讀取(默認文件夾)

文件
C:/Users/toshiba/Documents/NetBeansProjects/test/ 

文件不存在,但想成爲文件的路徑將是

C:/Users/toshiba/Documents/NetBeansProjects/test/ 

如果你讀它真正是文件:

文件f =新文件(「C:/Users/toshiba/Desktop/help.chm」);

您會看到exists()返回true。

System.out.println(f.exists()); 

然後:

String f2=f.getCanonicalPath(); 
+0

:感謝您的回覆 –