HiiHahWIKI - making some notes for... -
Java:クラスパスのファイルのフルパスを取得
をテンプレートにして作成
開始行:
*Java:クラスパスのファイルのフルパスを取得 [#ia0bd475]
クラスパスに格納しているファイルを、
-XX.getClass().getResourceAsStream("パス")
で取得したりしますが、このファイルの絶対パスが知りたい場...
こんな感じのメソッドで実現できます。
public static String getFullPath(String resourcePath){
return new File("".getClass().getResource(resourcePath)...
}
具体的には、クラスパスにシェルを格納しておいて、テストの...
この時に作成したサンプルメソッドです。
public void sample() {
String result;
String shFilePath =
new File(this.getClass()
.getResource("/testdata/putdata.sh")
.getPath())
.getAbsolutePath();
String cmd = "sh " + shFilePath;
System.out.println(cmd);
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
final InputStream stdout = proc.getInputStream();
final InputStream stderr = proc.getErrorStream();
// 標準出力を受けて出力するスレッドを作成
Thread outth = new Thread(new Runnable() {
public void run() {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(stdout));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
// 標準エラー出力を受けてエラー出力するスレッドを作成
Thread errth = new Thread(new Runnable() {
public void run() {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(stderr));
String line;
while ((line = br.readLine()) != null) {
System.err.println(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
// スレッドスタート
outth.start();
errth.start();
// 外部プロセス終了待ち
proc.waitFor();
// スレッド終了待ち
outth.join();
errth.join();
// ストリームを閉じる
stdout.close();
stderr.close();
// BufferedReader br = new BufferedReader(isr);
// while ((result = br.readLine()) != null) {
// System.out.println(result);
// }
} catch (IOException ex) {
ex.printStackTrace();
} catch (InterruptedException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
ちなみに、このサンプルでは、外部実行したコマンドの標準出...
終了行:
*Java:クラスパスのファイルのフルパスを取得 [#ia0bd475]
クラスパスに格納しているファイルを、
-XX.getClass().getResourceAsStream("パス")
で取得したりしますが、このファイルの絶対パスが知りたい場...
こんな感じのメソッドで実現できます。
public static String getFullPath(String resourcePath){
return new File("".getClass().getResource(resourcePath)...
}
具体的には、クラスパスにシェルを格納しておいて、テストの...
この時に作成したサンプルメソッドです。
public void sample() {
String result;
String shFilePath =
new File(this.getClass()
.getResource("/testdata/putdata.sh")
.getPath())
.getAbsolutePath();
String cmd = "sh " + shFilePath;
System.out.println(cmd);
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
final InputStream stdout = proc.getInputStream();
final InputStream stderr = proc.getErrorStream();
// 標準出力を受けて出力するスレッドを作成
Thread outth = new Thread(new Runnable() {
public void run() {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(stdout));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
// 標準エラー出力を受けてエラー出力するスレッドを作成
Thread errth = new Thread(new Runnable() {
public void run() {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(stderr));
String line;
while ((line = br.readLine()) != null) {
System.err.println(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
// スレッドスタート
outth.start();
errth.start();
// 外部プロセス終了待ち
proc.waitFor();
// スレッド終了待ち
outth.join();
errth.join();
// ストリームを閉じる
stdout.close();
stderr.close();
// BufferedReader br = new BufferedReader(isr);
// while ((result = br.readLine()) != null) {
// System.out.println(result);
// }
} catch (IOException ex) {
ex.printStackTrace();
} catch (InterruptedException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
ちなみに、このサンプルでは、外部実行したコマンドの標準出...
ページ名: