導航:首頁 > 文件目錄 > 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以絕對路徑生成文件相關的資料

熱點內容
福建創新app拉新有哪些 瀏覽:811
蘋果手機怎麼下微博 瀏覽:767
編程屬於計算機的哪個專業 瀏覽:594
360手機衛士45版本 瀏覽:445
iphone5s越獄圖標 瀏覽:560
常用文件系統比對 瀏覽:647
spring配置文件載入路徑 瀏覽:120
資料庫中表與視圖有什麼區別 瀏覽:800
java緩存教程 瀏覽:279
什麼安卓軟體可以拍科幻大片 瀏覽:58
ansible檢測nginx配置文件 瀏覽:670
win10如何刪除u盤文件 瀏覽:327
威綸通觸摸屏mt編程用什麼軟體 瀏覽:494
bb的網站有哪些 瀏覽:741
windos7如何收藏網站 瀏覽:411
網路對抗技術 瀏覽:120
藍牙可以傳多大文件 瀏覽:111
5s1528支持什麼網路 瀏覽:558
win10電腦右鍵閃屏 瀏覽:739
微信商戶付款 瀏覽:892

友情鏈接