Проблемы с записью в файл

У меня есть графический интерфейс для секундомера, у него есть кнопка «Пуск», кнопка «Стоп», а также кнопка «Разделить» и кнопка «Сохранить разделение». Записи секундомера разбиваются, и я хотел бы записать их в файл, но у меня есть ошибка:

FileWriter splitsWriter= new FileWriter("a.txt");
for(int i=0;i<theSplits.size();i++){
    splitsWriter.write(theSplits.get(i));
}

Он говорит Unhandled exception type IOException, но я думал, что писатель создает файл, если он не существует, так почему это исключение должно быть проблемой? я просто в замешательстве..


person user1918163    schedule 20.12.2012    source источник
comment
Вы должны добавить блок catch и получить подробную информацию об исключении IOException. Возможно, это Access Denied или другая подобная ошибка.   -  person pstrjds    schedule 20.12.2012
comment
Хм, я просто не понимаю, почему это ошибка компилятора, я раньше не использовал FileReader/FileWriter, но я использовал его около недели назад для чего-то, и у меня не было этой проблемы.   -  person user1918163    schedule 20.12.2012
comment
Вы получаете ошибку компиляции, если у вас нет блока catch. Я думал, что вы получаете необработанное исключение IOException, выдаваемое программой. Вы не можете скомпилировать, пока у вас нет обработчика catch. Смотрите ответ Алекса.   -  person pstrjds    schedule 20.12.2012


Ответы (1)


Как уже сказал pstrjds, вам нужно добавить блок try/catch. Ваш код должен выглядеть так:

try {
    FileWriter splitsWriter= new FileWriter("a.txt");
    for(int i=0;i<theSplits.size();i++){
        splitsWriter.write(theSplits.get(i));
    }
} catch (IOException e) {
    // Do something to handle the exception
}

Это должно скомпилироваться.

person Alex    schedule 20.12.2012
comment
Компилируется и запускается без ошибок, создает текстовый файл, но на самом деле не пишет в него, но я думаю, что могу это понять. РЕДАКТИРОВАТЬ: упс забыл закрыть писатель, теперь работает нормально. Спасибо за помощь! - person user1918163; 20.12.2012
comment
Не забудьте закрыть поток. Итак, после вашего for(...) {} вы должны поставить splitsWriter.close(); - person Alex; 20.12.2012