導航:首頁 > 文件教程 > 讀取classpath下文件

讀取classpath下文件

發布時間:2023-01-01 10:40:36

① 如何獲取classpath下實現某介面的所有類

如果你自己也不知道這個介面有哪些實現類的,採用java默認的ClassLoader是沒有辦法獲得所有實現類的,因為ClassLoader是在程序運行期間才會載入類到static區域,即如果你的程序需要使用某一個class,jvm發現這個class還沒有被ClassLoader載入,就會主動去載入,否則就跳過,你沒辦法知道那些未被載入的實現類。
如果你知道有哪些實現類的話,那就簡單了,自己配置一個xml文件,把實現類的完整類名寫在這個xml文件,再寫一個解析程序,迭代每一個類名,直接用Class.forName載入就可以了。
甚至你可以去解析所有的java源文件或class文件,像eclipse之類的IDE就是這么乾的,它管理工程下的所有class,解析這些class,這樣我們寫程序的時候,才有代碼提示之類的功能。
如果你純粹只想知道這個介面的實現類,在eclipse裡面選中介面,按下F4,eclipse會為你列出所有的實現類

② 關於web工程中java類如何獲取webapp路徑下的文件

第一復步: 先獲得classpath路徑制

Stringclasspath=this.getClass().getResource("/").getPath().replaceFirst("/","");

這樣子可以得到classpath路徑,類似於:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/


然後把WEB-INF/classes截取就能獲得WebAPP目錄啦:

StringwebappRoot=classpath.replaceAll("WEB-INF/classes/","");

得到的結果就是:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/


通過這個路徑你就能獲取該文件夾下的所有文件啦

③ 如何CLASSPATH下的resource.properties文件進行讀寫操作

下面的代碼是對resource.properties文件進行讀操作:
Properties props = new Properties();
InputStream input= this.getClass().getClassLoader().getResourceAsStream("resource.properties");

try{
props.load(input);
}catch(Exception e){
System.err.println("CheckLogin:不能讀取屬性文件. " + "請確保resource.properties在CLASSPATH指定的路徑中");
}
this.midaUser = props.getProperty("User");
this.midaPassword = props.getProperty("Password");

即分別讀取該文件中User和Password的值,現在想對User和Password的值進行修改

④ 關於讀取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如何獲取classpath中某文件的輸出流

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import java.text.ParseException;

public class Test {
public String hello(String name) {
return "hello" + name;
}
public static void main(String args[]) throws ParseException, IOException{
URL file = Test.class.getClassLoader().getResource("");
System.out.println(file.getFile()+"a.txt");
try {
System.out.println(file.getFile()+"a.txt");
FileOutputStream fo = new FileOutputStream(file.getFile()+"a.txt");
System.out.println(file.getFile()+"a.txt");
String a = "aaaa";
fo.write(a.getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
我隨便寫了個,大致思想是 獲得了路徑後,當然能獲得具體的輸出流了

⑥ 如何用Spring讀取JAR中的文件

通過Spring工具類獲取classpath下的文件資源
1、資源文件不在jar中

Java代碼
File cfgFile = ResourceUtils.getFile("classpath:test.txt");
或者
org.springframework.core.io.Resource fileRource = new ClassPathResource("test.txt");

獲取文件:fileRource.getFile();
獲取文件流:fileRource.getInputStream();
2、資源文件在jar中

Java代碼
org.springframework.core.io.Resource fileRource = new ClassPathResource("test.txt");

⑦ java讀取文件路徑問題

如果你使用的是eclipse,請檢查編譯是否禁止了非.class文件的編譯輸出,如果這項沒有問題。那麼 src/META-INF/*.* 文件自動輸出到 /WEB-INF/classes/META-INF/*.*。也就是說,最終資源文件在 WEB-INF/classes/META-INF/weibo.xml

使用JAVA 類獲取路徑:

Filef=newFile(getClass().getResource("/META-INF/weibo.xml").getPath());

獲取InputStream:

InputStreaminput=getClass().getResourceAsStream("/META-INF/weibo.xml");

另外,JAVA項目的標准協定(習慣)中的源代碼目錄結構是:

js">src
|--main
||--javaJAVA文件
||--resources資源文件
|--test
|--javaTESTJAVA文件
|--resourcesTEST資源文件

輸出的目錄結構是:

target
|--classesmain/java,main/resource輸出目錄
|--test-classestest/java,test/resources輸出目錄

⑧ matlab2018b安裝無法讀取文件classpath.txt如何解決,急急急!

估計剛安裝好的matlab是不會出現這個問題的,出現問題肯定是在某一次用360或者電腦管家清理垃圾之後才會出現這個問題。

首先聲明我的matlab版本是matlab R2014a,下載鏈接:(額,網盤限制,上傳不了超過4G大小的文件。。。要的私信吧=_=)...

破解過程網上有一大堆就不闡述了。

有如下解決方案:

方案1:

從別人的電腦上拷貝D:Program FilesMATLABR2014a oolboxlocal(這是我的matlab安裝路徑)路徑下的文件,應該是有35個文件,但是一般會缺少4個左右,將缺少的相應文件拷貝到自己的matlab相應文件夾下。重新打開matlab,bingo~~~

方案2:

安裝完畢之後,用自己的殺毒軟體掃描垃圾,我的是電腦管家,找到如下界面:

那麼在以後的清理垃圾時候就不會再清理這4個文件了。

吐槽就是不知道為什麼會把這幾個文件當成垃圾呢,還是QQ輸入法下面的垃圾。。。。

⑨ 如何獲取classpath下的log4j.properties文件的絕對路徑

java獲得當前文件路徑

第一種:
File f = new File(this.getClass().getResource("/").getPath());
System.out.println(f);
結果:
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin
獲取當前類的所在工程路徑;
如果不加「/」
File f = new File(this.getClass().getResource("").getPath());
System.out.println(f);
結果:
C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin\com\test
獲取當前類的絕對路徑;

第二種:
File directory = new File("");//參數為空
String courseFile = directory.getCanonicalPath() ;
System.out.println(courseFile);
結果:
C:\Documents and Settings\Administrator\workspace\projectName
獲取當前類的所在工程路徑;

第三種:
URL xmlpath = this.getClass().getClassLoader().getResource("selected.txt");
System.out.println(xmlpath);
結果:
file:/C:/Documents%20and%20Settings/Administrator/workspace/projectName/bin/selected.txt
獲取當前工程src目錄下selected.txt文件的路徑

第四種:
System.out.println(System.getProperty("user.dir"));

結果:
C:\Documents and Settings\Administrator\workspace\projectName
獲取當前工程路徑

第五種:
System.out.println( System.getProperty("java.class.path"));
結果:
C:\Documents and Settings\Administrator\workspace\projectName\bin
獲取當前工程路徑

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

閱讀全文

與讀取classpath下文件相關的資料

熱點內容
ubuntu翻譯工具 瀏覽:665
wifi安裝教程 瀏覽:398
蘋果有些qq文件打不開 瀏覽:139
微信分身圖片緩存在哪個文件 瀏覽:544
眾籌用什麼網站 瀏覽:1
天馬座的幻想版本 瀏覽:536
微雲保存文件圖片沒有了 瀏覽:236
如何把excel表格圖片導出到文件夾 瀏覽:387
qq三國快速升級攻略 瀏覽:660
js監聽手機home事件 瀏覽:439
第2章linux的桌面管理副本 瀏覽:452
qq郵箱手機上登錄微信賬號密碼錯誤 瀏覽:627
編程如何讓人物重復發射子彈 瀏覽:853
db2查看錶空間文件 瀏覽:607
ps文件界面設置 瀏覽:779
c語言12位的數據應該怎麼存儲 瀏覽:953
將ape導入iphone 瀏覽:107
js組合快捷鍵 瀏覽:174
linux系統盤默認掛在的文件夾 瀏覽:667
淘寶數據包如何操作上架 瀏覽:567

友情鏈接