Weka - преждевременный конец файла, строка 1 - PullRequest
0 голосов
/ 07 января 2019

Я знаю, что этот вопрос может звучать как дубликат, но это не так. Ни один из других вопросов об этой ошибке в Weka не смог решить мою проблему, и они были связаны с файлами arff. Я использую текстовый файл. После успешного использования Weka в Eclipse я захотел использовать его для приложения для Android. Поэтому я создаю и храню файл во внутреннем хранилище устройства и могу читать с него. Вот как я создаю файл :

String filename = "mydata";
String relation = "@relation mydata";
String attributes = "\n@attribute cheek numeric\n\n" +
        "@attribute eye numeric\n" +
        "@attribute mouth numeric\n" +
        "@attribute nose numeric\n" +
        "@attribute name {0, 1, 2}";
String data = "\n\n@data\n" +
        "58.319244, 35.185467, 28.329004, 19.908704, 0\n" +
        "64.63182, 36.4422 , 30.721794, 20.632916, 1" + "\n" +
        "65.45019, 36.28883, 27.934803, 26.095049, 2";

FileOutputStream outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write((relation + attributes + data).getBytes());
outputStream.close();

И когда я читаю из файла, это выглядит так:

@relation mydata

@attribute cheek numeric
...
@data
58.319244, 35.185467, 28.329004, 19.908704, 0
...

Я получаю ошибку:

java.io.IOException: преждевременное завершение файла, чтение токена [EOF], строка 1

Ошибка возникает в последней строке:

FileInputStream fis = getApplication().openFileInput("practice");

InputStreamReader isr = new InputStreamReader (fis); BufferedReader bufferedReader = new BufferedReader (isr); Объединенные экземпляры = новые экземпляры (bufferedReader);

Я потратил много времени на поиск этой ошибки, но не смог найти решение. Еще раз, я не сохраняю этот файл arff, я думаю, что он сохраняется как текстовый файл. Я также считаю, что ошибка связана с получением BufferedReader и передачей его в конструктор Instances.

Кто-нибудь сможет помочь мне решить эту проблему? Я использовал текстовый файл в Eclipse с аналогичной структурой, но теперь в Android он дает мне эту ошибку.


Обновление:

Я нашел решение своей проблемы и разместил его ниже. Проблема была с чтением файла в BufferedReader.

1 Ответ

0 голосов
/ 07 января 2019

Я смог заставить его работать, следуя другому подходу к получению BufferedReader от File. Следующий код успешно создает BufferedReader с данными из файла во внутреннем хранилище и может затем использоваться в конструкторе Instances.

String yourFilePath = getApplicationContext().getFilesDir() + "/" + "practice";
File yourFile = new File(yourFilePath);
BufferedReader bufferedReader = new BufferedReader(new FileReader(yourFile));

Первоначально я пробовал следующее:

FileInputStream fis = getApplication().openFileInput("practice");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);

Приведенный выше код вызывал исключение:

java.io.IOException: преждевременное завершение файла, чтение токена [EOF], строка 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...