相対パスの取得
注: 相対パス (つまり、その時点で誰との相対パスであるかを指定せずに) は、次の方法で取得できます (一般的な Java プロジェクトでも Web プロジェクトでも)。
文字列相対パス=System.getProperty("user.dir");
上記の相対パスでは、Java プロジェクト内のファイルはプロジェクトのルート ディレクトリからの相対パスです。
Web プロジェクト内のファイル パスは、Web サーバーによって異なります (Tomcat は Tomcat インストール ディレクトリbin を基準としています)。
2 番目のクラスのロード ディレクトリの取得 (つまり、実行時の特定のクラスのロード ディレクトリの取得)
1.1) 一般的な方法 1 (一般的な Java プロジェクトであっても Web プロジェクトであっても、まずパッケージ パスが表示される第 1 レベルのディレクトリを見つけます)
InputStream は = TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(test.txt ファイルのパスはプロジェクト名srctest.txt です。TestAction クラスが配置されているパッケージの第 1 レベルのディレクトリは src ディレクトリの下にあります)
上記の式では、TestAction と test.txt を対応するクラス名とファイル名に置き換えるだけです。
1.2) 一般的な方法 2 (この方法は 1.1 の方法と似ていますが、この方法は '/' で始まる必要がある点が異なります)
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(test.txt ファイルのパスはプロジェクト名srctest.txt で、クラス Test1 が配置されているパッケージの第 1 レベルのディレクトリは src ディレクトリの下にあります)
3 つの Web プロジェクトのルート ディレクトリの取得 (リリース後)
1 サーブレットから始める
サーブレットを作成し、その init メソッドに次のステートメントを記述できます。
ServletContext s1=this.getServletContext();
文字列 temp=s1.getRealPath("/");
結果は次のようになります: D:ToolsTomcat-6.0webapps 02_ext (002_ext はプロジェクト名)
s1.getRealPath("") が呼び出された場合、出力は D:ToolsTomcat-6.0webapps 02_ext ("" が 1 つ減ります) になります。
2 httpServletRequest から開始する
文字列 cp11111=request.getSession().getServletContext().getRealPath("/");
結果は次のようになります: D:ToolsTomcat-6.0webapps 02_ext
4 番目のクラスパスの取得 (Eclipse では、src またはclasses ディレクトリへのパスを取得します)
メソッド 1 Thread.currentThread().getContextClassLoader().getResource("").getPath()
例: String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
出力:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
方法2 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParseはsrcの特定パッケージ内のクラス、以下同様)
例:String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
出力: JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
さらに、ファイルを特定のパッケージに入れたい場合は、次の方法でファイルを取得できます (最初にパッケージの最終レベルのディレクトリを見つけます)。
例: String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
出力: JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse は、src ディレクトリの jdom パッケージ内のクラスです)