當前位置:生活全書館 >

綜合知識

> java web中讀取檔案,相對路徑怎麼寫 java web讀取檔案路徑怎麼寫

java web中讀取檔案,相對路徑怎麼寫 java web讀取檔案路徑怎麼寫

1.java web中讀取檔案,相對路徑怎麼寫

相對路徑的話,可以先獲取到當前檔案的編譯路徑,之後在找到想找檔案的路徑的思路來實現。

java web讀取檔案路徑怎麼寫 java web中讀取檔案,相對路徑怎麼寫

舉例:

XMLS.class.getClass().getResourceAsStream("/test/test.txt");

解釋:XMLS.class.getClass()是獲取當前的類編譯路徑,之後通過getResourceAsStream的形式即可找到要讀取的檔案的路徑。

備註:這個方法中後面的路徑也可以通過擷取的形式來進行路徑獲取,實現原理都是找到當前類路徑,之後通過相對位置找到另外檔案路徑。

2.java web 怎麼獲取檔案路徑

以工程名為TEST為例: (1)得到包含工程名的當前頁面全路徑:request.getRequestURI() 結果:/TEST/test.jsp (2)得到工程名:request.getContextPath() 結果:/TEST (3)得到當前頁面所在目錄下全名稱:request.getServletPath() 結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp (4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp") 結果:D:/resin/webapps/TEST/test.jsp (5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();結果:D:/resin/webapps/TEST。

3.java裡檔案路徑怎麼寫

File file = new File("D:123.txt");

你這種不用絕對路徑是不行的,

只有一個方法,在web工程啟動servlet中獲取到webroot路徑,在servlet的init中使用String webRoot = getServletContext().getRealPath("/");獲取,然後使用這webRoot變數追加路徑,再new File(),這樣的話要求就是,你的服務必須要啟動,否則不會init,無法得到工程釋出目錄的相對路徑

4.java web工程中讀取properties檔案,路徑一直不知道怎麼寫

1. 使用java.lang.Class類的getResourceAsStream(String name)方法

InputStream in = 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..

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,或者至少要包括你需要讀取的檔案。

5.javaweb中怎麼獲取檔案的絕對路徑

在jsp和class檔案中呼叫的相對路徑不同。 在jsp裡,根目錄是WebRoot 在class檔案中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的絕對路徑。

另:在Jsp,Servlet,Java中詳細獲得路徑的方法!

1.jsp中取得路徑:

以工程名為TEST為例:

(1)得到包含工程名的當前頁面全路徑:request.getRequestURI()

結果:/TEST/test.jsp

(2)得到工程名:request.getContextPath()

結果:/TEST

(3)得到當前頁面所在目錄下全名稱:request.getServletPath()

結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp

(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp")

結果:D:/resin/webapps/TEST/test.jsp

(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();

結果:D:/resin/webapps/TEST

2.在類中取得路徑:

(1)類的絕對路徑:String u=Class.class.getClass().getResource("/").getPath()

結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路徑:System.getProperty("user.dir")

結果:D:/TEST

3.在Servlet中取得路徑:

(1)得到工程目錄:request.getSession().getServletContext().getRealPath("") 引數可具體到包名。

結果:E:/Tomcat/webapps/TEST

(2)得到IE位址列地址:request.getRequestURL()

(3)得到相對地址:request.getRequestURI()

結果:/TEST/test

6.java獲取某個資料夾的路徑怎麼寫

File類有兩個常用方法可以得到檔案路徑一個是:getCanonicalPath(),另一個是:getAbsolutePath(),可以通過File類的例項呼叫這兩個方法例如file.getAbsolutePath()其中file是File的例項物件。下面是一個具體例子:

public class PathTest

{

public static void main(String[] args)

{

File file = new File(".srcbaidu");

System.out.println(file.getAbsolutePath());

try

{

System.out.println(file.getCanonicalPath());

} catch (IOException e)

{

e.printStackTrace();

}

}

}

getAbsolutePath()和getCanonicalPath()的不同之處在於,getCanonicalPath()得到的是一個規範的路徑,而getAbsolutePath()是用構造File物件的路徑+當前工作目錄。例如在上面的例子中.(點號)代表當前目錄。getCanonicalPath()就會把它解析為當前目錄但是getAbsolutePath()會把它解析成為目錄名字(目錄名字是點號)。

下面是上面程式在我電腦上的輸出:

G:xhuojkonw.srcbaidu

G:xhuojkonwsrcbaidu

  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/zonghezhishi/lyw4wz.html