2016-05-17 12 views
-1

で動作しないので、GUI javaで作業しようとしています。このコードは端末でコードを実行しようとするとうまく動作しますが、テキストファイルをロードできるjarファイルを作成する必要があります(悲しいことに、このコードは私のホームディレクトリにある のファイルに対してのみ機能しますが、別のフォルダからファイルにアクセスしようとすると、ファイル例外が返されます)本当に応答に感謝します。これが問題であれば私は気にしませんが、シリアル化可能なインターフェイスを実装しています。getAbsolutePath()は、

public boolean loadCanvas(String filename){ 
     boolean done = true; 
     try{ 
      File file = new File(filename); 
      FileInputStream fp = new FileInputStream(file.getAbsolutePath()); 
      ObjectInputStream i = new ObjectInputStream(fp); 
      obj = (A) i.readObject(); 
      i.close(); 
     } 
     catch(Exception eRef){ 
      done = false; 
     } 
     return done;  
    } 
+0

この方法でJARからファイルをロードすることはできません。クラスローダーを使用してgetResourceAsStreamを取得する必要があります。 – duffymo

+0

'System.err.println(file.getAbsolutePath())'を実行してパスを確認しましたか?次に、少なくともeRef.printStackTrace()を例外ハンドラに追加します。現在、すべての例外を無視しています。 –

+0

@duffymo彼は、**ディレクトリからテキストファイルをロードしたいと言っています** ... –

答えて

0

ClassLoader.getResourceAsStream()を使用してファイルをロードできます。また、 あなたはあなたのホームディレクトリの外でアクセスしようとしているファイルのアクセス許可をチェックしましたか?

+1

これは「どのディレクトリからでも」動作しません。 JARファイル内でのみ動作します。 OPの実際の問題が何であるかははっきりしていませんが、この解決策は問題には同意しません。 – EJP

1

getAbsolutePath()に電話する必要はありません。 String変数filenameには、アクセスしようとしている完全パスが含まれている必要があります。 FileInputStreamは、Fileオブジェクトまたは文字列ファイル名(例:new FileInputStream(file)またはnew FileInputStream(filename))でインスタンス化できます。あなたの問題は、あなたのファイル名変数に不適切なファイルパスが指定されているか、許可の制限に入っているということです。

関連する問題