カレントディレクトリ
日本語 | 現住所 |
英語 | current directory |
ふりがな | かれんとでぃれくとり、かれんとでぃれくとりー |
フリガナ | カレントディレクトリ、カレントディレクトリー |
実行開始時のディレクトリ。
Windows等のOSは、アプリケーションの実行時に、その実行時のディレクトリを「カレントディレクトリ」として記憶する。
アプリケーションは、ファイル操作や入出力時においてファイル名を指定する際、カレントディレクトリからの相対パスで各ファイルにアクセスすることができる。
ファイルの指定にカレントディレクトリと相対パスを用いることで、ディスク内全体のファイル構造が分からなくても、カレントディレクトリ周辺のディレクトリ構成さえ正しければ動作するため、アプリケーションの位置等を移動しやすいというメリットがある。
その反面、カレントディレクトリは変更される可能性があるため、カレントディレクトリから遠いディレクトリを指定する場合には絶対パスを使用した方がいいだろう。
Javaの場合、javaコマンドで実行した時のカレントディレクトリが、実行中のカレントディレクトリとして使用される。
カレントディレクトリは、システムプロパティの「file.separator」で取得できる。
ただし、Javaのプログラム中でカレントディレクトリを変更することは基本的に不可能である。特殊な方法を用いれば行えるが、OSに依存するため避けた方がいいだろう。
また、サーブレット等、明確にjavaコマンドを実行せずにアプリケーションが開始する場合、カレントディレクトリは環境等に大きく依存する。
この場合、絶対パスを使用するか、リソースバンドルを使用してクラスファイルのあるディレクトリを利用するのがいいだろう。
Windows等のOSは、アプリケーションの実行時に、その実行時のディレクトリを「カレントディレクトリ」として記憶する。
アプリケーションは、ファイル操作や入出力時においてファイル名を指定する際、カレントディレクトリからの相対パスで各ファイルにアクセスすることができる。
ファイルの指定にカレントディレクトリと相対パスを用いることで、ディスク内全体のファイル構造が分からなくても、カレントディレクトリ周辺のディレクトリ構成さえ正しければ動作するため、アプリケーションの位置等を移動しやすいというメリットがある。
その反面、カレントディレクトリは変更される可能性があるため、カレントディレクトリから遠いディレクトリを指定する場合には絶対パスを使用した方がいいだろう。
Javaの場合、javaコマンドで実行した時のカレントディレクトリが、実行中のカレントディレクトリとして使用される。
カレントディレクトリは、システムプロパティの「file.separator」で取得できる。
ただし、Javaのプログラム中でカレントディレクトリを変更することは基本的に不可能である。特殊な方法を用いれば行えるが、OSに依存するため避けた方がいいだろう。
また、サーブレット等、明確にjavaコマンドを実行せずにアプリケーションが開始する場合、カレントディレクトリは環境等に大きく依存する。
この場合、絶対パスを使用するか、リソースバンドルを使用してクラスファイルのあるディレクトリを利用するのがいいだろう。
参考サイト
// Sample.java
import java.io.File;
public class Sample
{
public static void main( String[] args )
{
// 以下のディレクトリでjavaコマンドを実行したとします。
// ・Windowsの場合
// D:\Sample\test
// ・UNIX系の場合
// /Sample/test
// カレントディレクトリの絶対パスを取得します。
String currentPath = System.getProperty( "user.dir" );
System.out.println( currentPath );
// ・Windowsでの実行結果
// D:\Sample\test
// ・UNIX系での実行結果
// /Sample/test
// カレントディレクトリのファイル一覧を取得します。
File dir = new File( currentPath );
String[] filenames = dir.list();
for( int iF1 = 0; iF1 < filenames.length; ++iF1 )
{
System.out.println( filenames[iF1] );
}
// .classpath
// .project
// bin
// src
// (注:上記は一例です。環境によって変化します。)
// カレントディレクトリの移動はできません。
// 相対パスで表現しましょう。
// カレントディレクトリにあるsrcディレクトリ内の
// ファイル一覧を取得します。
File srcDir = new File( "src" );
String[] srcFilenames = srcDir.list();
for( int iF1 = 0; iF1 < srcFilenames.length; ++iF1 )
{
System.out.println( srcFilenames[iF1] );
}
// Sample.java
// (注:上記は一例です。環境によって変化します。)
// このように、相対パスで直接していすれば、それは
// カレントディレクトリからの相対パスとみなされます。
}
}
import java.io.File;
public class Sample
{
public static void main( String[] args )
{
// 以下のディレクトリでjavaコマンドを実行したとします。
// ・Windowsの場合
// D:\Sample\test
// ・UNIX系の場合
// /Sample/test
// カレントディレクトリの絶対パスを取得します。
String currentPath = System.getProperty( "user.dir" );
System.out.println( currentPath );
// ・Windowsでの実行結果
// D:\Sample\test
// ・UNIX系での実行結果
// /Sample/test
// カレントディレクトリのファイル一覧を取得します。
File dir = new File( currentPath );
String[] filenames = dir.list();
for( int iF1 = 0; iF1 < filenames.length; ++iF1 )
{
System.out.println( filenames[iF1] );
}
// .classpath
// .project
// bin
// src
// (注:上記は一例です。環境によって変化します。)
// カレントディレクトリの移動はできません。
// 相対パスで表現しましょう。
// カレントディレクトリにあるsrcディレクトリ内の
// ファイル一覧を取得します。
File srcDir = new File( "src" );
String[] srcFilenames = srcDir.list();
for( int iF1 = 0; iF1 < srcFilenames.length; ++iF1 )
{
System.out.println( srcFilenames[iF1] );
}
// Sample.java
// (注:上記は一例です。環境によって変化します。)
// このように、相対パスで直接していすれば、それは
// カレントディレクトリからの相対パスとみなされます。
}
}
// Sample.java import java.io.File; public class Sample { public static void main( String[] args ) { // 以下のディレクトリでjavaコマンドを実行したとします。 // ・Windowsの場合 // D:\Sample\test // ・UNIX系の場合 // /Sample/test // カレントディレクトリの絶対パスを取得します。 String currentPath = System.getProperty( "user.dir" ); System.out.println( currentPath ); // ・Windowsでの実行結果 // D:\Sample\test // ・UNIX系での実行結果 // /Sample/test // カレントディレクトリのファイル一覧を取得します。 File dir = new File( currentPath ); String[] filenames = dir.list(); for( int iF1 = 0; iF1 < filenames.length; ++iF1 ) { System.out.println( filenames[iF1] ); } // .classpath // .project // bin // src // (注:上記は一例です。環境によって変化します。) // カレントディレクトリの移動はできません。 // 相対パスで表現しましょう。 // カレントディレクトリにあるsrcディレクトリ内の // ファイル一覧を取得します。 File srcDir = new File( "src" ); String[] srcFilenames = srcDir.list(); for( int iF1 = 0; iF1 < srcFilenames.length; ++iF1 ) { System.out.println( srcFilenames[iF1] ); } // Sample.java // (注:上記は一例です。環境によって変化します。) // このように、相対パスで直接していすれば、それは // カレントディレクトリからの相対パスとみなされます。 } }