導航:首頁 > 文件目錄 > 文件輸出流的相對路徑

文件輸出流的相對路徑

發布時間:2025-05-07 14:19:38

① c++如何打開所在文件夾的另一個文件夾進行文件寫入

使用相對路徑制即可,你可以查下,相對路徑
比如:A 目錄下有B,C目錄,B目錄下有D目錄,C目錄下有E目錄,exe在B目錄下,
如果要訪問B目錄下的文件,路徑寫:"文件名"
如果要訪問C目錄下的文件,路徑寫:"./C/文件名"
如果要訪問D目錄下的文件,路徑寫:"D/文件名"
如果要訪問E目錄下的文件,路徑寫:"./C/E/文件名"
或者你搜搜相對路徑哦

java圖片路徑問題

<img src="111.png" /> 引用的是同一目錄下的,你上面那段代碼根本就沒輸出到那個目錄當然找不到了。 對於一個項目來說圖片有個專有的文件夾存放,比如在WebRoot的imageFolder下,那麼你在輸出流寫圖片的時候要指定好這個相對路徑,然後頁面上用<img src="../imageFolder/111.png" />

通常來說解決方案是這樣的:以一個圖片上傳的例子為例,首先會在xml文件中配置好上傳文件的絕對路徑(例如C:/XXDX/XX這樣,將來部署到伺服器上時,修改配置文件路徑就好了)然後比如我們上傳的圖片都是用輸入流寫到xx/xx/war/upload中 (我看你後增加的代碼中沒有flush(),是不對的) 然後在頁面jsp中用/upload/xxx.png取值,之所以這么取是因為「/」是war根目錄,當然你要是用"../"那種方式你要查明白你現在的目錄級別。

③ io流中的相對路徑和絕對路徑是怎麼理解

File類是用來構造文件或文件夾的類,在其構造函數中要求傳入一個String類型的參數,用於指示文件所在的路徑.以前一直使用絕對路徑作為參數,其實這里也可以使用相對路徑.使用絕對路徑不用說,很容易就能定位到文件,那麼使用了相對路徑jvm如何定位文件的呢?
按照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的.

④ jsp 下載文件路徑問題

下載文件復有兩種方式。
1.是在制你的伺服器上能相對找到。
即http://localhost8080/web 這個映射的是你伺服器上的D:\web這個目錄
那麼你這個文件就要在D:\web這個目錄中。
比如D:\web\downfile\111.xls
你的超鏈接可以這樣寫。 <a href="/downfile/111.xls">download</a>
2.就是用流的方式下載。
<a href="#" onclilck="......">download</a>
這樣的超鏈接就不是指向一個文件了,而是向伺服器提交下載申請。
這樣執行到你後台的servlet類中,你可以根據一些必要的標識知道你要下載的文件。
這樣你把D:\111.xls文件讀取出來。然後寫入到response.getOutPutStream (這個方法有些記不清了,你查一下) 這樣實現下載。

⑤ 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;…

閱讀全文

與文件輸出流的相對路徑相關的資料

熱點內容
有了中標文件單價該如何審計結算 瀏覽:57
港版蘋果616G多少錢最新報價 瀏覽:6
揭陽學編程哪個好 瀏覽:315
蘋果護眼壁紙 瀏覽:699
pcsx2按鍵配置文件 瀏覽:740
快賺鎖屏密碼忘了怎麼辦 瀏覽:849
後綴是acd是什麼文件 瀏覽:593
電腦無法打開視頻文件怎麼辦 瀏覽:904
如何簡化applewatch上的app 瀏覽:646
王者榮耀紫色字體代碼 瀏覽:186
surfacepro4系統版本 瀏覽:655
一加手機升級文件在哪個文件夾 瀏覽:537
u盤裝不了4g文件 瀏覽:740
豆神美育app怎麼退款 瀏覽:530
微信吃葯表情動態 瀏覽:425
網路廣播怎麼保存錄音 瀏覽:777
照片變漫畫ps教程 瀏覽:46
現在找不到王者cg文件 瀏覽:590
pdf文件怎麼編輯圖片要會員 瀏覽:303
編輯vi配置文件 瀏覽:788

友情鏈接