私のプロジェクトには次の構造があります。
Eclipseの場合:
_myPorjectName
src
com.example.myproject
a.Java
com.example.myproject.data
b.xml
_
_a.Java
_で、_b.xml
_ファイルを読みたい。どうやってやるの?具体的には、_a.Java
_で次のコードを使用しました。
_DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("data/b.xml"));
_
このコードは_b.xml
_を見つけることができません。ただし、パスを_src/com/example/myproject/data/b.xml
_に変更すると、機能します。現在の場所は、プロジェクトファイルのルートにあるようです。
しかし、私は他の人の例を見ます_b.xml
_と_a.Java
_が同じフォルダーにある場合、new File("b.xml")
を直接使用できますしかし、私は_b.xml
_は、サブフォルダーに入れるのではなく、_a.Java
_と同じフォルダーにありますが、それでも機能しませんです。これが機能する場合、私の場合、new File("data/b.xml")
を使用できるはずです。これがなぜ機能しないのか、私には本当にわかりません。
すでにクラスパスと同じパッケージにある場合は、使用します
URL url = getClass().getResource("b.xml");
File file = new File(url.getPath());
または、InputStream
として読み取ります:
InputStream input = getClass().getResourceAsStream("b.xml");
static
メソッド内で使用できます
InputStream in = YourClass.class.getResourceAsStream("b.xml");
ファイルがファイルにアクセスしようとしているクラスと同じパッケージにない場合は、'/'
で始まる相対パスを指定する必要があります。
ex : InputStream input = getClass().getResourceAsStream
("/resources/somex.cfg.xml");which is in another jar resource folder