導航:首頁 > 文件教程 > java相對路徑獲取文件

java相對路徑獲取文件

發布時間:2024-11-15 08:00:28

java 相對路徑取不到文件

B中的類會讀取其配置文件,new File但是調用B的類時候找不到配置文件把讀取的代碼改下 文件的路徑可以用

② 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中用相對路徑打開文件。

1、在Java開發工具的project中使用相對路徑

在project中,相對路徑的根目錄是project的根文件夾,在此就是repathtest文件夾了。創建文件的寫法是:

Filef=newFile("src/com/lavasoft/res/a.txt");
Filef=newFile("doc/b.txt");

注意:路徑不以「/」開頭;

脫離了IDE環境,這個寫法就是錯誤的,也並非每個IDE都如此。

2、通過CLASSPATH讀取包內文件

讀取包內文件,使用的路徑一定是相對的classpath路徑,比如a,位於包內,此時可以創建讀取a的位元組流:

InputStreamin=ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");

有了位元組流,就能讀取到文件內容了。

注意:這里必須以「/」開頭;

3、看看完整的java中用相對路徑打開文件測試代碼:

packagecom.lavasoft.test;

importjava.io.*;

/**
*Java讀取相對路徑的文件
*

*/
publicclassReadFile{
publicstaticvoidmain(String[]args){
readTextA_ByClassPath();
readTextA_ByProjectRelativePath();
readTextB_ByProjectRelativePath();
}

/**
*通過工程相對路徑讀取(包內)文件,注意不以「/」開頭
*/
publicstaticvoidreadTextA_ByProjectRelativePath(){
System.out.println("-----------------readTextA_ByProjectRelativePath---------------------");
Filef=newFile("src/com/lavasoft/res/a.txt");
Stringa=file2String(f,"GBK");
System.out.println(a);
}

/**
*通過工程相對路徑讀取(包外)文件,注意不以「/」開頭
*/
publicstaticvoidreadTextB_ByProjectRelativePath(){
System.out.println("-----------------readTextB_ByProjectRelativePath---------------------");
Filef=newFile("doc/b.txt");
Stringb=file2String(f,"GBK");
System.out.println(b);
}


/**
*通過CLASSPATH讀取包內文件,注意以「/」開頭
*/
publicstaticvoidreadTextA_ByClassPath(){
System.out.println("-----------------readTextA_ByClassPath---------------------");
InputStreamin=ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
Stringa=stream2String(in,"GBK");
System.out.println(a);
}

/**
*文件轉換為字元串
*
*@paramf文件
*@paramcharset文件的字元集
*@return文件內容
*/
publicstaticStringfile2String(Filef,Stringcharset){
Stringresult=null;
try{
result=stream2String(newFileInputStream(f),charset);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}
returnresult;
}

/**
*文件轉換為字元串
*
*@paramin位元組流
*@paramcharset文件的字元集
*@return文件內容
*/
(InputStreamin,Stringcharset){
StringBuffersb=newStringBuffer();
try{
Readerr=newInputStreamReader(in,charset);
intlength=0;
for(char[]c=newchar[1024];(length=r.read(c))!=-1;){
sb.append(c,0,length);
}
r.close();
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
}

④ 大神,java存文件到資料庫是絕對路徑還是相對路徑呀

存文件到資料庫?還是存路徑到資料庫?還是說同時存路徑和文件?
這個表怎樣定義的?

⑤ Java 獲取相對路徑問題 System.getProperty("user.dir");

不要用user.dir,這是用戶的根目錄。
也不要在application下測試web下的東西。回
類似於這么寫:答
String uploadPath = getContext().getServletContext().getRealPath(
"/")
+ File.separator + "upload" + File.separator;

⑥ java如何獲取文件的相對路徑啊

一個例子,如果有一個Test文件夾裡面有test.java和hello.txt.如果你想用test.java操作hello.txt
只要在test.java中這樣寫File file=new File("hello.txt");//這樣就是相對路徑專。如果文件結構屬是
Test文件夾
... |------test.java

... |------hello.txt

... |------source文件夾

................. |---------world.txt

如果想在test.java中操作world.txt。只要這樣寫File file=new File("source/world.txt");
另外,在web開發中/代表項目文件夾根目錄,當然也有可能代替webapps,區分方法是:如果/開頭的uri是給瀏覽器解析則/代表webapps,如果是給伺服器後台解析,則代表項目文件

閱讀全文

與java相對路徑獲取文件相關的資料

熱點內容
qq個性名片霸氣圖片大全 瀏覽:957
背調公司和哪些官方資料庫對接 瀏覽:389
手機私人珍藏文件夾在哪裡 瀏覽:254
編程文檔在哪裡 瀏覽:591
c編程怎麼轉行 瀏覽:797
家庭網路連接設置 瀏覽:371
linux開機啟動 瀏覽:637
哪個app有拼音樂 瀏覽:226
qq音樂微信朋友圈 瀏覽:542
手機文件里的word文檔 瀏覽:348
手機微博舊版本 瀏覽:964
ps安裝文件夾刪除需要許可權 瀏覽:289
怎麼搜索手機中視頻文件 瀏覽:232
java判斷是偶數 瀏覽:860
java降序排序 瀏覽:739
ie9xp版本 瀏覽:718
哪些是通過計算機網路組網 瀏覽:265
iphone鎖屏密碼取消 瀏覽:41
win10怎麼添加電腦賬戶 瀏覽:388
視頻會議系統招標文件 瀏覽:588

友情鏈接