- - PR -
eclipse上にてファイル入出力時のエラー
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-24 10:34
たびたび申し訳ございません。
eclipse上にてjava.ioパッケージを利用してファイルに書いてある数字を入力及び更新を行い、 File file = new File(file-name); FileInputSteam fin=new FileInputStream(file); DataInputStream is =new DataInputStream(fin); のようにIo通常フィルターストリームパターンを記述したのですが、 以下のエラーにて、 fileNotFoudExceptionの表示があり、ファイルを認識できないようなのです。 入出力されるファイルの配置をクラスファイルと同じ場所にしたり、eclipse上ではWEB−INF/src/ ですが、プロジェクトフォルダーのすぐ下にしたがファイルを認識できません。 eclipse以外で入出力を行ったときはクラスファイルと同じフォルダーに配置すれば何の問題もなく動作したものですが、eclipse上の特殊事情があるのかどうかということを確認したいので 教えていただければ大変有難いのですが・・・ [ メッセージ編集済み 編集者: jokers 編集日時 2003-09-24 10:36 ] [ メッセージ編集済み 編集者: jokers 編集日時 2003-09-24 10:37 ] | ||||
|
投稿日時: 2003-09-24 10:50
eclipse特殊事情はありません。 まず、どこのファイルにアクセスしようとしているのか、ファイルパスをデバッグなりログなりでチェックされた方が良いと思います。 | ||||
|
投稿日時: 2003-09-24 16:08
お疲れさまです。
えーと、eclipseでどういう構成を行ったのかによって事情が違いますが・・・ 普通のclassなんですかね? main()のある。 それとも、Servletやjspからファイル操作のライブラリ叩いてるとかです? ServletやjspなどのWebアプリだと、動作させる時は、Webrootなどと呼ばれる ルートディレクトリを基準に動きます。 このディレクトリは環境によって変わりますので、注意しないと変な場所になり ますよ。 うんちくはさておき、とりあえず、try-catchでひっかければ判るのでは? try { File file = new File(file-name); FileInputSteam fin=new FileInputStream(file); DataInputStream is =new DataInputStream(fin); } catch(Exception e) { e.printstacktrace(); } とかやれば、メッセージ出るんじゃないですかね? #以下少し違う話 この会議室でも少し話を出させて戴いているのですが、このように絶対パスで場所を意識 しようとしている外部ファイルと、相対パスでアプリに飲み込みで良いファイルの区別は みなさんどんな感覚で行っているのでしょうか? 実際に質問がちらほら見られることからも、外部設定ファイルの類をクラスパスやwebroot などに置くのは、環境周りをきちんと把握しないと扱いづらいのかも知れませんね。 | ||||
|
投稿日時: 2003-09-24 16:31
とりあえず、カレントディレクトリを以下の方法で調べて、そこにおけばいいと思います。(おそらくEclipseを実行したディレクトリになってると思います。) File fileCurrent=new File("."); System.out.println(""+fileCurrent.getAbsolutePath()); ただし、設定ファイルなどを読み込むのはClassLoaderを使って読み込むのが定石だと思うのですが。 | ||||
|
投稿日時: 2003-09-24 16:59
webアプリに関しては分からないですが、クライアントサイドアプリであれば、
配備するようにしています。 従って、内部リソースはクラスローダーを介してロード、外部リソースはjava.ioパッケージのオブジェクトを使用してロードというように使い分けています。 アプリケーションで作成したファイルは、どこに置かれるか分からないので絶対パスでアクセスすることになりますね(ダイアログから選択するので、絶対 / 相対パスかどうかは気にしていないけど)。 | ||||
1
