2016-05-18 17 views
0

こんにちは私は、Java 1.7のプロジェクトに取り組んでおり、問題を見つけました。私は、リソースフォルダ内のプロジェクトに格納されているテキストファイルからいくつかの配列を設定しています。java 1.7のリソースフォルダからテキストファイルをどのように読み込みますか?

問題は、パスなどを設定しようとしてもパッケージに含まれていないとファイルが読み込まれないという問題です。私がこれを意味するのは、ソースとして設定されているリソースフォルダにテキストファイルが含まれていると、テキストファイルが機能しなくなるということです。

This is a link to a picture of my file structure within my project.

This is a link to a picture of my text file loader.

私はいくつかの他の質問を見て持っていたが、私はから読み取る方法をお知りになりたいのに対し、それらのすべては、ちょうど、Cドライブたとえばからファイルを読み取る方法を説明し完成したjarファイルの内部にバンドルされたファイル。

私は運がない数日間この問題を解決しようとしてきたので、私が得ることができるすべての助けに本当に感謝します。

+0

私は、Javaプロジェクト名の下にプレーンリソースフォルダを作成し、そのフォルダをJavaビルドパスに追加します。ファイル名は/GameDetails.txtです。 –

+0

リソースフォルダのファイルが、結果として得られるjarファイルに入っていますか? – ekaerovets

+0

ああ、私はそれをJavaのビルドパスに追加しませんでした。私はそれを試してみるよ。 – Lazzer555

答えて

3
あなたは以下のようにresoucesフォルダ内のファイルにアクセスするためにClassLoaderクラスを使用することができます

:あなたもリスト

にテキストファイルを読むためにFiles.readAllLinesを使用することができます

public static String[] load(String path){ 
    ClassLoader classLoader = ResourceLoader.class.getClassLoader(); 
    File file = new File(classLoader.getResource(path).getFile()); 
    List<String> lines = null; 
    try { 
     lines = Files.readAllLines(file.toPath()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return lines.toArray(new String[lines.size()]); 
} 

これを見てtutorial

これは役に立ちます。

+0

ありがとう、私は今すぐこれを試してみます。 – Lazzer555

0

まず、jarから読み込むには、選択肢があるときにFileの代わりにURLを使用するメソッドの方が良いでしょう。オペレーティングシステムのファイルシステムは、通常、jarファイルを見ることができません。

アドレッシングに関する指示は、Classのapiにあります。

アドレスは、基本クラスとして使用するクラスと同じファイルの場所を使用しようとします。あなたの場合、ResourceLoaderはGameFolderというパッケージに入っています。

レベルを上げるには ".."を使用しますので、 "../src/resources/" +パスでURLを取得してみてください。私はこれをテストしなかったので、正しい答えになるためにはさらに調整する必要があるかもしれません。しかし、おそらくあなたの答えにあなたを得るのに役立つ概念があります。

0

リソースからファイルを読み込む方法について既に説明したことがある場合は、この説明をスキップして、それについてmaisスレッドをペーストしてください。here

あなたはCドライブを指す例についても述べました。私があなたがプロフェッショナルなプロジェクト(または一般的にもっと良いアーキテクチャを持っているもの)を使っていると思えば、MavenとGradleがリソースパス(メインとテストの両方)をどのように設定するかを見てみることをお勧めします:MavenGradle

関連する問題