2012-04-17 9 views
1

私は、次のコードを持っている:ClassLoaderを使ってtxtファイルをロードするには?

public class App { 
    public static void main(String[] args) { 
    System.out.println(App.class.getClassLoader().getResource("test.properties")); 
    System.out.println(App.class.getClassLoader().getResource("test.txt")); 
    System.out.println(App.class.getClassLoader().getResourceAsStream("test.properties")); 
    System.out.println(App.class.getClassLoader().getResourceAsStream("test.txt")); 
    System.out.println(App.class.getResourceAsStream("test.properties")); 
    System.out.println(App.class.getResourceAsStream("test.txt")); 
    } 
} 

このコードは次のように出力できます:クラスローダは、.txtファイルをロードすることを拒否しないのはなぜ

file:/C:/../test.properties 
null 
[email protected] 
null 
[email protected] 
null 

を?

更新日:

を私はクラスパスに私のファイルの両方確信しています。クラスパスが/ srcに設定され、両方のファイルがこのディレクトリにあります。

+1

は、クラスパス上のテキストファイルですか? – Deco

+0

入出力(コードだけでなく)にもコード書式を使用してください。 –

+0

テキストファイルをクラスローダー経由でロードできないようにすべき理由はありません(通常はコンテキストクラスローダーを使用します)。クラスパスを設定する方法には何らかのエラーがあります。あなたはそれをまだ見つけていません。 test.proeprtiesとtest.txtは同じディレクトリ(つまり、共通のルートではなく、同じ実際のディレクトリ)にありますか?あなたのクラスパス上に他のファイル名test.propertiesがありますか?もし解決されているのであれば? – henry

答えて

2

は、ほとんどの場合、あなたのtxtファイルをクラスパス上にない

+0

Intellij Ideaは、他の拡張子を持つソースフォルダからクラスパスにファイルを移動しません。プロパティファイルのみを移動します。それが問題でした。 – dmiandre

1

あなたはClassLoaderを使用してロードしたいすべてのファイルがclasspathに含まれていることを確認する必要があります。通常、そのようなリソースは/src/main/resourcesに格納され、クラスパスに含まれます。

Eclipseを使用している場合は、エクスプローラでプロジェクトを右クリックしてProperties -> Java Build Path -> Source (Tab) -> Add Folder... (Button)に移動し、そこにフォルダ構造を追加します。

関連する問題