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

文件讀取相對路徑

發布時間:2023-09-01 07:33:34

㈠ 關於讀取Properties文件的相對路徑問題,怎麼寫是正確的

FileInputStream只能定位絕對路徑,所以你填入相對路徑當然找不到。
讀取資源文件一般根據上下文環境分為兩種情況。
第一種是非WEB應用的環境中,只需要簡單的通過類載入器的getResourceAsStream方法讀取。
例如,classpath根目錄下有一個setting.properties文件,可以這樣讀取
java代碼
收藏代碼
InputStream
is
=
Thread.currentThread().getClass().getResourceAsStream("/setting.properties");
第二種是WEB應用的環境中,因為應用包含在了Servlet
容器中,所以情況相對來說要復雜一些。
同上一樣,讀取classpath中的資源,依然通過類載入讀取,但是通過上下文的類載入器中去讀。
例如,
Java代碼
收藏代碼
InputStream
is
=
Thread.currentThread().getContextClassLoader().getResourceAsStream("/setting.properties");
讀取WebContent目錄中的情況又不一樣了,不能通過類載入器讀取,需要通過ServletContext去讀。
例如,
Java代碼
收藏代碼
InputStream
is
=
request.getServletContext().getResourceAsStream("/WEB-INF/setting.properties");

㈡ 誰告訴我java中 讀取文件時想用相對路徑,代碼怎麼寫

1絕對路徑:加上盤符,就是絕對正確的地址,一般通過我的電腦打開到那個位置,復制地址就可以。
2相對路徑:
a;同級目錄: 直接填寫文件名稱;
b;下級鏈接:帶上文件夾,寫上文件名稱;
c:上級鏈接:"..\文件名稱"

㈢ maven項目只能讀到絕對路徑下的文件,讀不到相對路徑下的文件

新建一個maven工程後,main目錄下會有java和resources兩個文件夾,其中java文件夾下存放源代碼,resources文件夾下存放一些配置文件等。

maven%E5%B7%A5%E7%A8%8B%E7%BB%93%E6%9E%84%E5%9B%BE.pngJava: maven下讀取資源文件的問題, java路徑

在弄清楚編譯後,資源文件以及位元組碼存在哪裡這個問題之前,有必要明白什麼是classpath

classpath實際上就是編譯後的 以 classes 文件夾為起點的路徑,而在ItelliJ IDEA 中編譯後的文件都會存入out/proction下。

所以,編譯後,resources文件夾中的文件以及java目錄下的文件都會存入同一個目錄(out/proction)下,也就是說,編譯後是不存在java和resources這兩個目錄的。

讀取資源文件的若干中方法

package me.shenchao.main;

import java.io.*;

/** * Created by jerry on 16-4-20. */

public class Demo1 {

private static void readTxt(String filePath) {

BufferedReader reader = null;

try {

reader = new BufferedReader(new FileReader(filePath));

String line = null;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

public static void main(String[] args) {

//獲取classpath路徑

System.out.println("classpath路徑: "+Demo1.class.getClassLoader().getResource("").getPath());

//獲取當前類的載入路徑

System.out.println("當前類載入路徑: "+Demo1.class.getResource("").getPath());

// 讀取文件resources目錄中文件的若干種方法

// 方法一:從classpath路徑出發讀取

readTxt(Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath());

// 方法二:從類載入路徑出發,相當於使用絕對路徑

readTxt(Demo1.class.getResource("/test/demo1.txt").getPath());

// 方法三:從類載入路徑出發,相當於使用相對路徑

readTxt(Demo1.class.getResource("../../../test/demo1.txt").getPath());

}

}

其中demo1.txt文件中內容為:

hahahahahahahahahha

輸出如下:

classpath路徑: /home/jerry/IdeaProjects/Demo/out/proction/demo1/

當前類載入路徑: /home/jerry/IdeaProjects/Demo/out/proction/demo1/me/shenchao/main/

hahahahahahahahahha

hahahahahahahahahha

hahahahahahahahahha

從上面可以發現getResource 與 class.getClassLoader().getResource兩者的區別:

前者獲取的是當前類載入的路徑,如果用此方法讀取文件則有兩種方法,與相對路徑絕對路徑非常類似,具體參見代碼

後者獲取的是類載入器的路徑,即會到classpath路徑下。可以理解當前在 classp/ 目錄下,要想訪問哪個文件,直接填寫路徑即可,不用區分相對路徑和絕對路徑。顯然,此方法比較容易寫出。推薦。

.gif

相關

Related Posts

JAVA: 理解Java中的類初始化

在運行 Java 代碼時,很多時候需要弄清楚程序執行的流程,而面向對象的 Java 程序並非像主要為面向過程而設計的 C 語言一樣去順序執行(簡單按照代碼的順序),這使得對於類文件的載入以及執行流程的理解非常重要。本文簡單介紹了 Java 類的初始化部分具體過程,包括成員變數、靜態代碼塊、構造函數等的初始化時機及執行流程。 初始化時機 根據 javase 8 的文檔說明[1],一個類(本文暫不考慮介面)T…

JAVA: 獲取當前月份c.get(Calendar.MONTH)中月份少一個月

@Test public void testGetTitle(){ System.out.println(new LocalDate().minusDays(1).toString("MM/dd/yyyy")); // joda-time Calendar c1 = Calendar.getInstance(); int year…

JAVA: 讀寫文件的幾種方法

如果您使用java8,可以也參考這篇文章:JAVA: Java8流逐行讀取文件 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat;…

㈣ 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,如果是給伺服器後台解析,則代表項目文件

㈤ C++讀取文件是怎樣將絕對路徑轉化為相對路徑

把需要讀取的文件放在可執行程序所在的文件夾中,即可直接使用相對路徑。如果待讀取文件在其他文件夾,必須使用絕對路徑。

1、C語言標准庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。
2、常式:

#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打開輸入文件,放在執行程序所在目錄下
FILE*fp2=fopen("output.txt","w");//打開輸出文件
if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出
puts("不能打開文件!");
rturn0;
}
fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數
b=fgetc(fp1);//從輸入文件讀取一個字元
fgets(c,100,fp1);//從輸入文件讀取一行字元串

printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數

fputs(c,fp2);//向輸出文件寫入一行字元串
fputc(b,fp2);//向輸出文件寫入一個字元
fprintf(fp2,"%d",a);//向輸出文件寫入一個整數

fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return0;
}

㈥ java web中讀取文件,相對路徑怎麼寫

相對路徑的話,可以先獲取到當前文件的編譯路徑,之後在找到想找文件的路徑的思路來實現內。容
舉例:
XMLS.class.getClass().getResourceAsStream("/test/test.txt");
解釋:XMLS.class.getClass()是獲取當前的類編譯路徑,之後通過getResourceAsStream的形式即可找到要讀取的文件的路徑。
備註:這個方法中後面的路徑也可以通過截取的形式來進行路徑獲取,實現原理都是找到當前類路徑,之後通過相對位置找到另外文件路徑。

㈦ C#中如何獲取文件的相對路徑

應用程序路抄:徑string programpath=Application.StartupPath;
string relativepath=fullpath.SubString(programpath.Length);
//其中fullpath為全路徑,不明白歡迎繼續追問

㈧ python讀取文件相對路徑

比如你在和當前文件並列的"game"文件夾下有"score.txt"文件,那麼相對路徑表示為:
"game/score.txt"
就是和這個py文件並列的文件夾前面不需要加"/",後面的都需要加,別忘了加上後綴。
例:
with open("game/score.txt", mode = "a+", encoding = "utf-8") as f:
score = f.readline()

閱讀全文

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

熱點內容
pps緩存文件怎麼刪除 瀏覽:10
家裡網路在用怎麼檢測 瀏覽:419
克拉漫播下載的文件名 瀏覽:417
壓縮好的文件哪裡找 瀏覽:831
百度網盤怎樣上傳文件夾 瀏覽:320
java發展是 瀏覽:892
程序編程結束還要做什麼 瀏覽:778
pcb打版文件有哪些 瀏覽:39
網路原來ip地址忘記了怎麼辦 瀏覽:142
iphone6s微信密碼設置 瀏覽:810
java將數字轉換成字母 瀏覽:854
c盤中的哪些是系統文件夾 瀏覽:668
分布式服務如何跨庫統計數據 瀏覽:829
力控轉發數據客戶端模式如何建立 瀏覽:200
怎麼樣讓自己的網站不被別人看到 瀏覽:711
編程擴展效果如何 瀏覽:335
榮耀暢玩手環同步qq 瀏覽:475
怎麼向sql中添加資料庫 瀏覽:596
錄歌失敗重啟app什麼意思 瀏覽:522
壓縮文件包怎麼在微信發送 瀏覽:432

友情鏈接