2010-09-27 2 views
2

Итак, это строка, возвращающая нуль. Что я делаю неправильно при создании этого FileInputStream?FileInputStream Null?

FileInputStream fin = new FileInputStream(new File(getClass().getResource("data/levellocks.lv").toURI())); 
+2

Точно, какая часть 'null'? Он не может быть плавником, так как 'new' никогда не возвращает' null'. –

ответ

2

Если вы действительно не нужен входной файл потока, вы линия может быть упрощена:

InputStream in = getClass().getResourceAsStream("data/levellocks.lv"); 

Class.getResource() и Class.getResourceAsStream по сравнению с пакетом. Чтобы получить файл относительно корня пути к классам, вы можете вызывать эти методы на загрузчиком классов:

InputStream in = getClass().getClassLoader().getResourceAsStream("data/levellocks.lv"); 

ли вы убедитесь, что файл находится в папке двоичном, рядом с .class файлы? Не только в исходной папке рядом с файлами .java?

3

Единственное, что может быть пустым есть getResource («данные/levellocks.lv»), который звонит вызов Touri к сбою

+0

, но может ли он быть Null, если файл есть? Потому что я дважды проверил, и это O_O – William

+2

, он не смотрит в область, в которой вы думаете, что это – AHungerArtist

2

Либо GetClass или getResource может вернуть нуль. Все остальное должно преуспеть или сделать исключение.

2

Я на самом деле просто справился с этой проблемой (я не эксперт), но попробуйте отладки и посмотрим, где конструктор пытается разрешить имя. Для меня это был пакет класса. Поэтому, когда я помещаю файл в ожидаемую папку, он нашел его.

Возможно, для вас это будет отличаться, поскольку я использую maven. Но я поместил его в src/main/resources, и он не смог его найти. Когда я поместил структуру папок в src/main/resources com.work.hin.terminology.match (который был пакетом этого класса), он нашел его.

Смежные вопросы