JAVA File的建立及相對路徑絕對路徑

File f = new File("D:/test/mytest.txt");//當執行這句話後在內存的棧空間存在一個f的應用,在堆空間裏存在一個mytest.txt對象。注意java

這個對象只含有文件的屬性(如大小,是否可讀,修改時間等),不包含文件的內容,因此length=0。當咱們想執行對文件的操做的時候,這個時web

候抽象路徑起做用了,好比咱們想執行f.createNewFile()命令時,虛擬機會將抽象路徑轉化爲實際的物理路徑,到這個轉化後的物理路徑(此時tomcat

是硬盤)下進行文件的建立。這時,若是在你的D盤沒有test文件夾,那麼很差意思啦,程序就會拋異常,若是有test文件夾,就能夠建立一個服務器

mytest.txt文件了。能不能建立mytest.txt就在於這個文件上面有沒有test文件夾,這也就是抽象路徑在裝怪了。
若是想讓f引用在硬盤中把文件夾也建立出來怎麼辦?用f.getParentFile()求出mytest.txt上面的全部文件夾,而後在mkdirs()就搞定了。eclipse

-----------------------
-----------------------
File類是用來構造文件或文件夾的類,在其構造函數中要求傳入一個String類型的參數,用於指示文件所在的路徑.之前一直使用絕對路徑做爲參jvm

數,其實這裏也可使用相對路徑.使用絕對路徑不用說,很容易就能定位到文件,那麼使用了相對路徑jvm如何定位文件的呢?函數

按照jdk Doc上的說法」絕對路徑名是完整的路徑名,不須要任何其餘信息就能夠定位自身表示的文件。相反,相對路徑名必須使用來自其餘路spa

徑名的信息進行解釋。默認狀況下,java.io 包中的類老是根據當前用戶目錄來分析相對路徑名。此目錄由系統屬性 user.dir 指定,一般是命令行

Java 虛擬機的調用目錄.」orm

相對路徑顧名思義,相對於某個路徑,那麼究竟相對於什麼路徑咱們必須弄明白.按照上面jdk文檔上講的這個路徑是」當前用戶目錄」也就是」

java虛擬機的調用目錄」.更明白的說這個路徑實際上是咱們在哪裏調用jvm的路徑.舉個例子:

假設有一java源文件Example.java在d盤根目錄下,該文件不含package信息.咱們進入命令行窗口,而後使用」d:」命令切換到d盤根目錄下,而後

用」javac Example.java」來編譯此文件,編譯無錯後,會在d盤根目錄下自動生成」Example.class」文件.咱們在調用」java Example」來運行

該程序.此時咱們已經啓動了一個jvm,這個jvm是在d盤根目錄下被啓動的,因此此jvm所加載的程序中File類的相對路徑也就是相對這個路徑的,即

d盤根目錄:D:\.同時」 當前用戶目錄」也是D:\.在System.getProperty(「user.dir」);系統變量」user.dir」存放的也是這個值.

咱們能夠多作幾回試驗,把」Example.class」移動到不一樣路徑下,同時在那些路徑下,執行」java Example」命令啓動jvm,咱們會發現這個」當前

用戶目錄」是不斷變化的,它的路徑始終和咱們在哪啓動jvm的路徑是一致的.

搞清了這些,咱們可使用相對路徑來建立文件,例如:

File file = new File(「a.txt」);

file.createNewFile();

假設jvm是在」D:\」下啓動的,那麼a.txt就會生成在D:\a.txt;

此外,這個參數還可使用一些經常使用的路徑表示方法,例如」.」或」.\」表明當前目錄,這個目錄也就是jvm啓動路徑.因此以下代碼能獲得當前目

錄完整路徑:

File f = new File(「.」);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);//D:\

最後要說說在eclipse中的狀況:

Eclipse中啓動jvm都是在項目根路徑上啓動的.好比有個項目名爲blog,其完整路徑爲:D:\work\IDE\workspace\blog.那麼這個路徑就是jvm的啓

動路徑了.因此以上代碼若是在eclipse裏運行,則輸出結果爲」 D:\work\IDE\workspace\blog.」

Tomcat中的狀況.

若是在tomcat中運行web應用,此時,若是咱們在某個類中使用以下代碼:

File f = new File(「.」);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);

那麼輸出的將是tomcat下的bin目錄.個人機器就是」 D:\work\server\jakarta-tomcat-5.0.28\bin\.」,由此能夠看出tomcat服務器是在bin目

錄下啓動jvm的.實際上是在bin目錄下的」 catalina.bat」文件中啓動jvm的.

相關文章
相關標籤/搜索