導航:首頁 > 文件目錄 > java以絕對路徑生成文件

java以絕對路徑生成文件

發布時間:2024-12-03 16:02:31

1. java中用父路徑和子路徑創建file對象有什麼用呢

是相對路徑和絕對路徑的問題
在Java中用File對象來創建文件時,絕對路徑一般是不會出現什麼問題的,如果使用相對路徑,則有可能出現意向不到的問題,以下主要是針對相對路徑進行解釋

1、Eclipse下的Java Project環境

目錄結構如下所示:

JavaTest

src

com.ccse.TestDemo.java

resource

text.txt

String filepath = "resource/train.txt";

File file = new File(filepath);

注意:filepath變數的內容

在此,java.io默認情況下用當前目錄來分析相對路徑名,定位到當前用戶目錄下("user.dir"),即工程目錄d:\JavaTest下,因此此時的相對路徑(以當前用戶目錄為基礎)為"resource/train.txt",這樣JVM就根據用戶當前目錄(user.dir) 和"resource/train.txt"得到完整路徑,即絕對路徑,從而找到相應的文件,需要注意的是相對路徑的起始處無斜杠「/」,比如上面的filepath。

2. 還沒搞懂Java中的路徑看完這篇文章你就全懂了

之前對於Java中的路徑一直感到模糊不清,雖然知道一些,但實際操作時還是會遇到很多問題。每次遇到FileNotFound錯誤時,都會去搜索解決方案,比如相對路徑是從哪裡開始的,如何使用某個方法等。其實這就是一種盲目的編程方式。這次我決心一次性搞懂Java中的路徑問題,以便在未來的編程中更加得心應手。

「絕對路徑:」絕對路徑的英文全稱是Absolute Path,指的是真實的路徑,是計算機中的完整路徑,必須准確無誤。它以系統的根目錄為起點,即各個盤符。

「相對路徑:」相對路徑是相對於目標文件位置的路徑。但相對路徑的相對性很重要,它可以是項目的根目錄或classpath目錄。下面通過一個例子來說明絕對路徑和相對路徑的區別。

假設JavaIO模塊下的resource目錄下的a.txt文件,它的絕對路徑和相對路徑如下:

「絕對路徑:」D:\code\River\JavaSE\javaIO\src\main\resources\a.txt

「相對路徑:」相對於項目的根路徑是:classpath(也就是「target/classes」)

在project中,相對路徑的根目錄是project的根文件夾。創建文件的寫法如下:

「相對路徑:」D:\code\River\JavaSE(也就是工程的相對路徑),注意路徑不能以"/"開頭

「絕對路徑:」

在Java開發中,我們經常需要獲取文件內容。通常使用File類來獲取,例如:獲取「c:\文件.txt」時,我們需要創建一個File對象:File file = new File("c:\文件.txt")。然後使用file類創建一個文件輸入流:FileInputStream in = new FileInputStream(file),再使用該輸入流進行操作。但這樣有一個缺點,就是文件路徑是硬編碼的形式,在Java編碼過程中我們不推薦這種寫法。

當然,在web項目中,我們可以通過application對象的getRealPath(「文件名」)方式獲取文件的絕對路徑,但這也不是很推薦。因此,我們可以使用class.getResource(path)和class.getClassLoader(path)方法來獲取文件資源。下面我們來研究一下兩者的區別:

4.1 class.getResource(path)

其中的參數path有兩種形式,一種是以「/」開頭的,另一種是不以"/"開頭。

輸出的結果為:

假設現在的項目結構如下所示,針對下面的三種情況如何獲取:

獲取上圖所示的三種文件的方法:

輸出的結果為:

class.getResource()和class.getResourceAsStream()方式的使用在路徑上是一致的。

4.2 Class.getClassLoader().getResource(String path)

該方法中的參數path不能以「/」開頭,path表示的是從classpath下獲取資源的。

輸出結果:

五、總結

3. java中獲取文件路徑的幾種方式

File的getPath方法得到相對路徑 getAbsolutePath方法得到絕對路徑

舉個例子
String fileName = "yourfile.txt";

File aFile = new File(fileName);//這里可以把路徑拼在fileName前面 可以用相對路徑 也可以用絕對 注意分隔符
System.out.println(aFile.getPath()); //相對路徑
System.out.println(aFile.getAbsolutePath()); //絕對路徑

具體的東西在這里 http://teamojiao.iteye.com/blog/446615

4. java里絕對路徑和相對路徑的區別

按照jdk Doc上的說法」絕對路徑名是完整的路徑名,不需要任何其他信息就可以定位自身表示的文件。相反,相對路徑名必須使用來自其他路徑名的信息進行解釋。默認情況下,java.io 包中的類總是根據當前用戶目錄來分析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是 Java 虛擬機的調用目錄.」

相對路徑顧名思義,相對於某個路徑,那麼究竟相對於什麼路徑我們必須弄明白.按照上面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的.

閱讀全文

與java以絕對路徑生成文件相關的資料

熱點內容
ftp上傳文件命令linux 瀏覽:427
java有關的文獻 瀏覽:943
紅色代碼百度雲資源 瀏覽:581
認識文件結構圖片 瀏覽:802
在美國買的iphone6在中國能用嗎 瀏覽:284
榮耀手環3升級失敗 瀏覽:965
db2資料庫的備份與恢復 瀏覽:686
哪個數據恢復大師是免費的 瀏覽:397
linux搭建網盤伺服器 瀏覽:938
linux文件數打開數 瀏覽:754
ps如何去網站的水印 瀏覽:39
watch如何關閉數據用戶體驗計劃 瀏覽:177
fastjson首字母大寫 瀏覽:749
圖樣及技術文件完整性 瀏覽:624
編程用什麼練速度 瀏覽:285
破戒僧六職業傳奇版本 瀏覽:828
linuxepoll並發 瀏覽:382
caxa版本高了打不開 瀏覽:928
數控銑床編程是什麼等級 瀏覽:306
訊飛語記導出的文件在哪裡 瀏覽:408

友情鏈接