Ⅰ java web工程中讀取properties文件,路徑一直不知道怎麼寫
1. 使用java.lang.Class類的getResourceAsStream(String name)方法
InputStreamin=getClass().getResourceAsStream("/config.properties");
在靜態方法中,由於不能使用getClass()方法,必須寫出類的名字。區別不大。
MyClass.class.getResourceAsStream("/config.properties");
使用這個方法,路徑前面可以加斜杠也可以不加。根據Class類getResourceAsStream()方法的JavaDoc:
Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream.
Before delegation, an absolute resource name is constructed from the given resource name using this algorithm:
If the name begins with a '/' ('u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:
modified_package_name/name
Where the modified_package_name is the package name of this object with '/' substituted for '.' ('u002e').
就是說,這個path假如以斜杠開頭,則斜杠後面的部分是文件相對classpath的路徑;假如不是,Java會把這個path看作是「包名/文件名」的結構,會嘗試在這個類的包裡面去找,而不是從classpath開始找;在這種情況下,除非你把properties文件放到MyClass.class所屬的包裡面,不然都會是null的。
2. 使用java.lang.ClassLoader類的getResourceAsStream(String name)方法
路徑是不能加斜杠的!非常重要。
MyClass.class.getClassLoader().getResourceAsStream("config.properties");
這是因為使用classloader進行讀取,所輸入的參數必須是一個相對classpath的絕對路徑,在格式上,一個絕對路徑是不能以'/'開頭的。
注意這兩個方法是同名的,但路徑參數的格式截然不同。
3. 在Maven中的運用
現在幾乎所有的web project都是maven project,Maven的默認設置是把
src/main/resources/
加入到classpath裡面的。那麼,最好的做法是把你的properties文件放進src/main/resources裡面,然後用上面代碼讀取。用Class類的,一般要加斜杠;用ClassLoader類的,絕不能加斜杠!
假如是Eclipse裡面,需要把這個src/main/resources加到classpath裡面。具體操作是右擊工程,選擇「Configure buildpath」,根據Maven的要求,把src/main/java和src/main/resources都加進去,並且保證Exclude是none,Include是all,或者至少要包括你需要讀取的文件。
Ⅱ javaweb項目讀取本機文件問題
伺服器端不能直接獲取客戶端的文件,你需要讓用戶上傳文件到伺服器,然後處理伺服器的文件
Ⅲ java web中讀取文件,相對路徑怎麼寫
相對路徑的話,可以先獲取到當前文件的編譯路徑,之後在找到想找文件的路徑的思路來實現。
舉例:
XMLS.class.getClass().getResourceAsStream("/test/test.txt");
解釋:XMLS.class.getClass()是獲取當前的類編譯路徑,之後通過getResourceAsStream的形式即可找到要讀取的文件的路徑。
備註:這個方法中後面的路徑也可以通過截取的形式來進行路徑獲取,實現原理都是找到當前類路徑,之後通過相對位置找到另外文件路徑。
Ⅳ java web 如何讀取一個磁碟下的一個文件夾下的所有
public static void main(String[] args) {File file = new File("/Users/xieyuhai/Desktop/readAllFile");readFile(file);}public static void readFile(File file) {File[] fs = filelistFiles();for (File f : fs) {Systemoutprintln(fisjava web 如何讀取一個磁碟下的一個文件夾下的所有
Ⅳ web項目中如何用java讀取properties文件
如下
E:\blsh\Tomcat
6.0\webapps\bucea_drms\WEB-INF\conf\drms_config.xml
項目發布的路徑。
Properties
p
=
new
Properties();
FileInputStream
in
=
new
FileInputStream(configFileString);
//
如果此處直接
使用
visitFile
會報錯,找不到文件。
p.load(in);
p.getProperty("name");//
獲取屬性值
in.close();
FileOutputStream
out
=
new
FileOutputStream(configFileString);
p.setProperty("siteVisit",siteVisit);//
修改屬性
p.setProperty("resVisit",
resVisit);
p.store(out,
"
visit
update!");//
存儲修改後屬性out.close();
Ⅵ java怎麼獲取web資源文件
1、一般工程中使用I/O類指定文件的絕對路徑讀取
FileInputStream fis = new FileInputStream("src/main/resources/zsm.properties");
ppt.load(fis);
String memAddr1 = ppt.getProperty("memAddr1");
2、Web工程中可以使用ServletContext或ClassLoader來讀取
2.1、通過ServletContext來讀取資源文件,文件路徑是相對於web項目(如/JspServletFeature)根路徑而言的。
2.2、通過ClassLoader來讀取,文件路徑是相對於類目錄而言的(maven工程中一般為/target/classes)
示例如下
(1)文件位置
放在src目錄(或其子目錄)下是相對於項目根目錄如JspServletFeature的路徑
放在JavaResources下是相對於類目錄即classes的目錄
(2)代碼
// 使用servletContext讀取資源文件,相對於web項目的根路徑(即JspServletFeature)
out.println("\n使用servletContext讀取資源文件,相對於web項目的根路徑(即JspServletFeature):");
readFileByServletContext(response, "FileReadFile1.properties");
readFileByServletContext(response, "/FileReadFile1.properties");
readFileByServletContext(response, "WEB-INF/classes/FileReadFile2.properties");
readFileByServletContext(response, "/WEB-INF/classes/FileReadFile2.properties");
Ⅶ java怎麼讀取web工程裡面的文件
平時寫程序的時候,很多時候提示文件找不到,而拋出了異常,現在整理如下
一 相對路徑的獲得
說明:相對路徑(即不寫明時候到底相對誰)均可通過以下方式獲得(不論是一般的java項目還是web項目)
String relativelyPath=System.getProperty("user.dir");
上述相對路徑中,java項目中的文件是相對於項目的根目錄
web項目中的文件路徑視不同的web伺服器不同而不同(tomcat是相對於 tomcat安裝目錄\bin)
二 類載入目錄的獲得(即當運行時某一類時獲得其裝載目錄)
1.1)通用的方法一(不論是一般的java項目還是web項目,先定位到能看到包路徑的第一級目錄)
InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(test.txt文件的路徑為 項目名\src\test.txt;類TestAction所在包的第一級目錄位於src目錄下)
上式中將TestAction,test.txt替換成對應成相應的類名和文件名字即可
1.2)通用方法二 (此方法和1.1中的方法類似,不同的是此方法必須以'/'開頭,
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(test.txt文件的路徑為 項目名\src\test.txt,類Test1所在包的第一級目錄位於src目錄下)
三 web項目根目錄的獲得(發布之後)
1 從servlet出發
可建立一個servlet在其的init方法中寫入如下語句
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (關鍵)
結果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext為項目名字)
如果是調用了s1.getRealPath("")則輸出D:\工具\Tomcat-6.0\webapps\002_ext(少了一個"\")
2 從httpServletRequest出發
String cp11111=request.getSession().getServletContext().getRealPath("/");
結果形如:D:\工具\Tomcat-6.0\webapps\002_ext\
四 classpath的獲取(在Eclipse中為獲得src或者classes目錄的路徑)
方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath()
eg: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
輸出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse為src某一個包中的類,下同)
Ⅷ java 讀文件的幾種方法
方式一:採用ServletContext讀取,讀取配置文件的realpath,然後通過文件流讀取出來。因為是用ServletContext讀取文件路徑,所以配置文件可以放入在web-info的classes目錄中,也可以在應用層級及web-info的目錄中。文件存放位置具體在eclipse工程中的表現是:可以放在src下面,也可放在web-info及webroot下面等。因為是讀取出路徑後,用文件流進行讀取的,所以可以讀取任意的配置文件包括xml和properties。缺點:不能在servlet外面應用讀取配置信息。
方式二:採用ResourceBundle類讀取配置信息,
優點是:可以以完全限定類名的方式載入資源後,直接的讀取出來,且可以在非Web應用中讀取資源文件。缺點:只能載入類classes下面的資源文件且只能讀取.properties文件。
方式三:採用ClassLoader方式進行讀取配置信息
優點是:可以在非Web應用中讀取配置資源信息,可以讀取任意的資源文件信息
缺點:只能載入類classes下面的資源文件。
Ⅸ java web 有什麼辦法在瀏覽器中讀取文件內容
那要把瀏覽器的許可權降得很低、最低,沒有任意安全保障
然後使用applet或js就可以
Ⅹ java 怎麼讀取web jar中的某個配置文件
項目遷移的過程中發現以前的代碼維護性實在是差。
我把問題簡化為以下這些簡單的代碼:
項目M
引用了項目
A.jar,這個A在lib目錄裡面
在A裡面放置了一個配置文件test.properties,
就放在jar的根目錄下。
A.jar
|___test.properties
在M中有一段代碼回去讀取這個A.jar里的配置文件,簡單一點就用下面這句話來調用。
Java
code
public
class
ConfigUtil
{
public
static
String
getInstance()
throws
Exception{
String
path
=
ConfigUtil.class.getResource("/").toString();
path
=
path.substring(0,
path.length()-8);//
System.out.println(path);//這里列印的結果顯示可以拿到當前類的絕對路徑
InputStream
f
=
new
FileInputStream("jar:"+path+"lib!/A.jar/"+"test.properties");
return
"xxx";
}
}