web-dev-qa-db-ja.com

特定のパッケージからtxtファイルを読み取るJava

特定のパッケージのテキストファイルを読み込もうとしていますが、見つからなかったので返されます。絶対パスを挿入して読み取ることはできますが、絶対パスを挿入せずに読みたいです。

String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);

どうすればいいですか?

ありがとう

12
dextervip

あなたが使用することができます

InputStream in = 
   getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt");
Reader fr = new InputStreamReader(in, "utf-8");

いくつかの補足事項:パッケージ名に大文字を使用しないでください。変数の英語名を使用してください。これらは受け入れられている慣行や慣習です。

26
Bozho

それでも少し遅れるかもしれませんが、これは他の多くの人を助けることができます。これらは、プロジェクトで利用可能なリソースにアクセスする方法です

デフォルトパッケージからリソースを取得する

// Getting Resource as file object
File f = new File(getClass().getResource("/excludedir.properties").getFile());

// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/excludedir.properties");

特定のパッケージからリソースを取得する

// Getting Resource as file object
File f = new File(getClass().getResource("/com/vivek/core/excludedir.properties").getFile());

// Getting resource as stream object
InputStream in = getClass().getResourceAsStream("/com/vivek/core/excludedir.properties");

注: getclass()は非静的関数であり、静的コンテキストから呼び出すことはできません。静的コンテキストから呼び出す場合は、

YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile()

お役に立てれば。乾杯!!

13
Vivek

テキストファイルがクラスファイルと同じ構造内に存在する場合は、getResourceAsStreamを使用する方が適している可能性があります。

http://download.Oracle.com/javase/6/docs/api/Java/lang/Class.html#getResourceAsStream(Java.lang.String)

5
Codemwnci

全体的な移植性については、スラッシュの代わりにFile.separatorを使用することを検討してください。ただし、getResourceAsStreamは機能するはずです。 Eclipseで作業している場合、クラスファイルはおそらく作業ディレクトリに対してbinにあるため、プロジェクトフォルダー内にある場合は、本来の方法で機能するはずですが、getResourceAsStreamでは機能しないことに注意してください。または、アクセスするリソースがソースフォルダーにある場合は、プロジェクトをクリーンアップするたびにbinにコピーされるため、getResourceAsStreamが機能します。

0
dspyz