⑴ java項目中文件的路徑
java項目中文件的路徑-方法大全
一、 相對路徑的獲得
說明:相對路徑(即不寫明時候到底相對誰)均可通過以下方式獲得(不論是一般的java項目還是web項目)
System.getProperty("user.dir");
上述相對路徑中,java項目中的文件是相對於項目的根目錄web項目中的文件路徑視不同的web伺服器不同而不同(tomcat是相對於tomcat安裝目錄in)
二 類載入目錄的獲得(即當運行時某一類時獲得其裝載目錄)
1.1)通用的方法一(不論是一般的java項目還是web項目,先定位到能看到包路徑的第一級目錄)
InputStreamis=TestAction.class.getClassLoader().getResourceAsStream("test.txt");(test.txt文件的路徑為 項目名src est.txt;類TestPath所在包的第一級目錄位於src目錄下)
三 web項目根目錄的獲得(發布之後)
1 從servlet出發
可建立一個servlet在其的init方法中寫入如下語句(沒有請求的話會拋空指針導常)
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/"); (關鍵)
結果形如:F: omcat-6.0.36webapps est(test為項目名字)
如果是調用了s1.getRealPath("")則輸出F: omcat-6.0.36webapps est(少了一個"")
2 從httpServletRequest出發(沒有請求的話會拋空指針導常)
String path=request.getSession().getServletContext().getRealPath("/");
結果形如:F: omcat-6.0.36webapps est
四 classpath的獲取(在Eclipse中為獲得src或者classes目錄的路徑),放在監聽器,可以窗口啟動獲取路徑
方法一Thread.currentThread().getContextClassLoader().getResource("").getPath()
String path = Thread.currentThread().getContextClassLoader()
.getResource("").getPath();
System.out.println("path========"+ path);輸出:path========/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
方法二JdomParse.class.getClassLoader().getResource("").getPath()(JdomParse為src某一個包中的類,下同)
eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
輸出:JdomParse.class.getClassLoader().getResource-/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
另外,如果想把文件放在某一包中,則可以 通過以下方式獲得到文件(先定位到該包的最後一級目錄)
eg String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
輸出:JdomParse.class.getResource--/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/
(JdomParse為src目錄下jdom包中的類)
四 屬性文件的讀取:
方法 一
InputStream in = lnewBufferedInputStream(newFileInputStream(name));
Properties p =newProperties();p.load(in);
注意路徑的問題,做執行之後就可以調用p.getProperty("name")得到對應屬性的值
方法二
Locale locale =Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest",locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
工程src目錄下propertiesTest.properties(名字後綴必須為properties)文件內容如下:
test=hello word
不通過Servlet獲取路徑
第一種實現
Java代碼
URL url = ClassLoader.getSystemClassLoader().getResource("./");
File file =newFile(url.getPath());
File parentFile =newFile(file.getParent());
System.out.println("webRoot:"+parentFile.getParent());
第二種實現
首先寫一個接聽類 (推薦使用,容器啟動時就執行,不會拋空指針異常,適合做定時器任務來刪除伺服器文件的路徑)
Java代碼:
package com.chinacreator.report.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* @authorxiaoqun.yi
*/
public class PathListener {
private staticServletContext servletContext;
public voidcontextDestroyed(ServletContextEvent sce) {
this.servletContext= sce.getServletContext();
System.out.println("path=======:"+servletContext.getRealPath("/"));
}
public voidcontextInitialized(ServletContextEvent arg0) {
}
}
在web.xml中加入如下配置
Java代碼 :
<listener>
<listener-class>com.chinacreator.report.listener.PathListener</listener-class>
</listener>
五、Java中的getResourceAsStream有以下幾種:
1. Class.getResourceAsStream(String path) : path 不以』/'開頭時默認是從此類所在的包下取資源,以』/'開頭則是從ClassPath根下獲取。其只是通過path構造一個絕對路徑,最終還是由 ClassLoader(類載入器)(獲取資源)
2. Class.getClassLoader.getResourceAsStream(String path) :默認則是從ClassPath根下獲取,path不能以』/'開頭,最終是由ClassLoader獲取資源。
3. ServletContext. getResourceAsStream(String path):默認從WebAPP根目錄下取資源,Tomcat下path是否以』/'開頭無所謂,當然這和具體的容器實現有關。
4. Jsp下的application內置對象就是上面的ServletContext的一種實現。
其次,getResourceAsStream 用法大致有以下幾種:
第一: 要載入的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("myfile.xml");
第二:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("file/myfile.xml");
第三:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml
那麼,應該有如下代碼:
me.class.getResourceAsStream("/com/x/file/myfile.xml");
總結一下,可能只是兩種寫法
第一:前面有 「 / 」
「 / 」代表了工程的根目錄,例如工程名叫做myproject,「 / 」代表了myproject
me.class.getResourceAsStream("/com/x/file/myfile.xml");
第二:前面沒有 「 / 」
代表當前類的目錄
me.class.getResourceAsStream("myfile.xml");
me.class.getResourceAsStream("file/myfile.xml");
⑵ JAVA編譯環境
配置JDK / JAVA
1 環境變數
Path ----外部命令搜索路徑;
CLASSPATH ----類資源位置搜索路徑;
1.1 設置方法1
「開始」-->「設置」-->「控制面板」-->「系統」-->「高級」-->「環境變數」 -->「新建」,在彈出的對話框中加入兩個新的環境變數:
變數名
變數值
Path
.;C:\jdk1.3\bin
CLASSPATH
.;C:\jdk1.3\lib\tools.jar;C:\jdk1.3\lib\dt.jar
注意事項:單詞(Path、CLASSPATH等)的大小寫拼寫不能錯,下同。其中的「C:\jdk1.3」是JDK的實際安裝路徑;path環境變數一般已經存在,所以只需要編輯此變數就可以了,把.;C:\jdk1.3\bin附加在原變數值的前面(防止其它JRE的影響,如Oracle中的JRE)。
1.2 設置方法2
編寫如下批處理。
echo off
rem set JDK running environment
set path=d:\java\jdk\bin;%path%
set classpath=.;d:\j2sdk\lib\tools.jar;D:\Apache\Tomcat5\common\lib\servlet-api.jar;
注意事項:命名上面內容的文件為jdk.bat,並存放於恰當的目錄中,每次切換到DOS提示符狀態時,先執行此批處理,設置環境變數。其中的d:\java\jdk是JDK的實際安裝路徑。
2 修改注冊表(JDK1.3中文問題) :
設置方法:「開始」-->「運行」-->輸入「regedit」然後回車-->「HKEY_LOCAL_MACHINE」-->「SOFTWARE」-->"JavaSoft" -->"Java 運行環境",單擊滑鼠右鍵「重命名」為"Java Runtime Environment"
3 啟動命令行功能:
3.1 方法1
「開始」-->「運行」 -->輸入「cmd」然後回車;
3.2 方法2
「開始」-->「程序」 -->「附件」 -->「命令行提示」;
3.3 方法3
將方法2的最後一步改為:用滑鼠左鍵單擊「命令行提示」(不松開左鍵)並將其拖到桌面上或桌面最左下角已有的幾個小圖標處,松開滑鼠左鍵。
注意事項:如果是用設置方法2設置環境變數,不要忘了執行完上面的方法1或方法2或方法3後,執行jdk.bat。
4 關於命令行編譯和運行功能:
在命令行方式下運行的命令,對應的可執行文件(javax.exe, java.exe等)可以位於環境變數Path中所聲明的位置,但運行所要用到的其它類型文件.java , .class文件必須位於當前路徑下或在文件名前標明其所在路徑。
例如:當HelloWorld.java文件保存在路徑:C:盤的ex子目錄下時,可用如下命令編譯:
C:\ex\javac HelloWorld.java (推薦用法)或
C:\javac ex\HelloWorld.java 或
D:\javac C:\ex\HelloWorld.java
運行時與編譯類似,但文件名不加後綴,如:C:\ex\java HelloWorld
5 顯示文件擴展名
設置方法:「我的電腦」或「資源管理器」窗口-->「工具」 -->「文件夾選項」-->「查看」 -->將「隱藏已知文件類型的擴展名」項目置於未選中狀態;
6 三種文本編輯器
notepade, UltraEdit, Kawa;
⑶ 怎麼改變eclipse編譯路徑
eclipse中找到編譯後的class路徑有兩種方法:
一、項目設置.class設置輸出路徑
右鍵項目 > Properties > Java Build Path > Source > Default Output Folder
2、點擊"Browse"時可以選擇目錄或新建目錄用於存放.class文件
設置完成後,src中的.java文件編譯後生成的.class文件與package所對應的目錄一起。
存放在classes目錄中。如圖:
二、設置全局.class文件輸出路徑
Window > Preferences > Java > Build Path > Source and Output Folder
如下圖:
此時再新建項目的時候會自動的將.class文件放置在你所設置的目錄中
⑷ JAVAC編譯是否必須在JAVA文件所在目錄才行
不是,要設置環境變數,在我的電腦上單擊按滑鼠右鍵,選擇屬性,彈出系統屬性對話框,切換高級選項卡,點擊環境變數,系統變數下點擊新建按鈕,變數名填:JAVA_HOME,變數值:你安裝的JAVA應用程序路徑名(例C:\Program
Files\Java\jdk1.7.0_51),在系統變數找到變數Path,點擊編緝按鈕,在變數值最後添加\;%JAVA_HOME%\bin;再運行cmd,你就可以運行JAVA虛擬機了。
⑸ Java代碼編譯好後的.class文件在哪個文件夾啊
eclipse工具,如果是java項目,class文件在你的java項目的bin下或bin下的包里(bin下的文件夾下);
如果是java
web項目class文件在你的web項目下的WebRoot\WEB-INF\classes
文件下
⑹ java:src目錄及子目錄下的java文件如何編譯到classes目錄下對應的目錄
其實不用什麼小工具或者什麼命令,工程下的src目錄都是指source,也就是源代碼的意思,對於Java來說,就是主要用來存放後綴名為.java文件和一些配置文件(比如.properties文件)。在src目錄旁邊的build目錄里就有一個classes目錄,當java工程啟動的時候src目錄里的.java文件和配置文件都會自動統一編譯到這個classes目錄中,一個包就是一個文件夾名字相同一一對應。
⑺ JAVA編譯目錄
用-d來指定目錄,例如:
你所在目錄是c:\work
裡面有兩個目錄run和class
將.java文件放在run中,並且保留裡面的package class;
進入目錄c:\work\run
執行命令javac hello.java -d c:\work