Страница 1 из 1

Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 10 апр 2016, 23:28
MiniDi
Прошу помощи. Требуется считать xls файл. Но try никогда не выполняется, а выполняется условие из catch. В итоге bb={“0,0,0,0”}. Не могу понять, что я делаю не так. Файл лежит в папке проекта.
Перемещение файла в другое место, изменение имени ничего не дало. Думала, что дело в том, что это xls, но даже с txt тоже самое.
Буду благодарна за любую помощь.

[syntax=java5]Book bb = new Book();
String[] mas = bb.boob();

public class Book {
public String[] data = new String[4];

public String[] boob() {
try(FileInputStream fis = new FileInputStream("list.xls")) {
//Workbook wb = new HSSFWorkbook(fis);
for(int i=0; i<4; i++){
data = "1";
}
fis.close();
return data;
}
catch (IOException e){
String[] d ={"0","0","0","0"};
return d;}
}
}[/syntax]

Re: Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 11 апр 2016, 00:08
Foenix
просто пройди код отладчиком. Ошибка вот и лезет в catch.

и раз ты делаешь try с ресурсами, то закрывать fis не нужно.
Вообще код, конечно странный, даже разбираться в таком не хочется. Очень сложночитаемый и не аутентичный. Два ретерна, в одной из веток заполнение свойства объекта, в другом просто возврат локальной переменной и так далее, не говоря уже о названиях методов.

И при форматировании кода на форуме делай синтакс java5, а не тех "код". Я показала.

Re: Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 11 апр 2016, 07:47
math64
"list.xls" - а где путь к каталогу, где он находится?

Re: Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 11 апр 2016, 18:12
MiniDi
Говорят, если файл лежит в папке проекта, то путь не обязателен. Но я так же пробовала писать полный путь, а именно "C:\\Android\\MySchedule\\list.xls"

fis.close убрала, ошибка не исчезла.

Re: Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 11 апр 2016, 19:38
Foenix
ошибка не в close, это я просто к слову сказала.
И что это за путь у тебя такой странный? Какие-то С, двойные слеши совершенно не в ту сторону наклонены..?
и что значит "папка проекта" в твоем понимании? при установке в обычном случае там ничего не будет, необходимо записать файл в assets, а затем при первом запуске скопировать файл в папку проекта, тогда он там будет. К примеру.

Re: Конструкция try/catch. Проблемы с FileInputStream

Добавлено: 11 апр 2016, 20:27
MiniDi
Foenix, спасибо большое. Почитала про assets и все заработало. Я и не знало, что недостаточно просто в папку перенести...