- ベストアンサー
File クラスでディレクトリの場所を自動で取得するには
現在のディレクトリにあるファイルを 自動で名前変更するプログラムを作りたいと思います。 例えば file name1.txt file name2.txt を file_name1.txt file_name2.txt にするものです。 http://takeoba.com/index.php?File%A5%AF%A5%E9%A5%B9 こちらを参考にしてみましたが、この場合ディレクトリ名を直接いれてますが 自動で取得することは可能でしょうか? File クラス以外でも大丈夫です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
java doc によれば、 「デフォルトでは、java.io パッケージのクラスは、常に現在のユーザディレクトリを基準に相対パス名を解決します」 つまり、アプリケーション開始クラスのあるディレクトリーをカレントディレクトリーとして、相対パスを指定すればいいのでは? クラスファイルと同じディレクトリーにあるファイルなら String infile = 'xx.txt'; java.io.File this_file = new File(infile); これでいけると思うけど? それとも、java.net.URLClassLoaderで、現在位置を取得するとか。 String infile = 'xx.txt'; java.io.File this_file = new File( this.getClass().getClassLoader().getResource(infile) ); この場合も、アプリケーション開始クラスのあるディレクトリーがカレントディレクトリーになります。 Applet なら、アプレット開始クラスのあるディレクトリーのjava.net.URLを返す getCodeBase() というmethodもあります。
その他の回答 (2)
- hirusagari
- ベストアンサー率64% (20/31)
ANo.2 さんの方法でもいけるでしょうし、 もっと直接的な手段としては以下のようにシステムプロパティを参照する手があります。 System.getProperty("user.dir")
お礼
システムプロパティで色々調べられるのは面白いですね 回答ありがとうございました ^^
- koko_u_
- ベストアンサー率18% (459/2509)
>自動で取得することは可能でしょうか? 「自動」の意味がわかりません。 カレントディレクトリという意味?
お礼
そうです
お礼
File file = new File("file"); String filePath = file.getAbsolutePath(); String dirName = filePath.substring(0, filePath.lastIndexOf("\\")); これで目的のものを取得できました。 回答ありがとうございました ^^