У меня есть проект (в Eclipse, но это не имеет значения) с иерархией следующим образом:Невозможно читать локальный ресурс
-src
---Start.java
---resources
-----media
-------intro.wav
-----textures
-------logo.png
-------tiles.abotm
В Start.java
, я пытаюсь получить tiles.abotm
как InputStream, используя Class.getResourceAsStream(String)
как таковой:
public class Start
{
public static void main(String[] args)
{
try
{
InputStream in = Start.class.getResourceAsStream(
"/resources/textures/tiles.abotm");
}catch(Exception e){
e.printStackTrace();
}
}
}
Простой, верно? К сожалению нет. InputStream полностью пуст с размером 0. Я также попытался открыть FileInputStream прямо до абсолютного местоположения tiles.abotm
, но я получаю то же самое! Я знаю, что файл не пуст. Фактически, он имеет 2,257 байт, в соответствии с Windows, Eclipse и объектом File, используемым для создания упомянутого ранее FileInputStream. Также в соответствии с объектом File он доступен для чтения, доступен для записи, он существует, он не является каталогом, а его имя - tiles.abotm
. Итак, если объект File может его прочитать, почему он не может быть открыт в InputStream ??
--EDIT-- Я забыл упомянуть, что у меня есть еще один файл в textures
директории под названием logo.png
, который я могу открыть и прочитать в том же порядке, без проблем вообще. Это только этот файл.
- В ответ на fge это фактический код: Loader.loadTextureMap ("/ resources/textures/tiles.abotm"); // Он вызывается отдельным методом в отдельном классе.
public class Loader{
public static TextureMap loadTextureMap(String texMap){
DataInputStream dis = new DataInputStream(
Start.class.getResourceAsStream(texMap));
//It then goes on to read it, but I've determined that at this point,
there is nothing in this DataInputStream.
}
}
Когда вы говорите, «абсолютное положение», вы имеете в виду, начиная с /? – fge
Посмотрите на [Как действительно прочитать текстовый файл из classpath в Java] (http://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath-in-java) – neo108
Я считаю, что Eclipse требует наличия ресурсов в папке ресурса, а не в исходной папке. Вы можете попробовать использовать что-то вроде '/ src/resources/textures/tiles.abotm' в качестве теста, но я бы изменил его до его выпуска. – MadProgrammer