Пока цикл чтения файла работает на дополнительное время - PullRequest
0 голосов
/ 01 января 2019

Чтение из файла CSV, пытаясь получить каждую строку.

Он будет читать все строки, но будет выполняться дополнительное время, в результате чего массив `String 'попытается извлечь из нулевой ссылки.Данные состоят из 6 строк с 4 элементами, разделенными символом ','.

public void setReadingArray(File localFile){
    Log.e("MyActivity","Reading into Array");

    InputStream is = null;
    try {
        is = new FileInputStream(localFile);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Toast.makeText(DailyReadingActivity.this,"Could not find file Exception: "+ e, Toast.LENGTH_LONG).show();
    }
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(is, Charset.forName("UTF-8")));


    try {
        String line = reader.readLine();
        while (line != null) {

            Log.d("MyActivity", " Creating dailyReader ");
            //Split by ,

                String[] tokens;
                tokens = line.split(",");

                //Read Data
                DailyReading dailyReading = new DailyReading();
                dailyReading.setBookName(tokens[0]);
                dailyReading.setChapter(tokens[1]);
                dailyReading.setBookName2(tokens[2]);
                dailyReading.setChapter2(tokens[3]);
                listReadings.add(dailyReading);

                Log.d("MyActivity", " Just Created " + dailyReading);
                line = reader.readLine();


        }

    } catch (IOException e) {
        Log.wtf("MyActivity", " Error Reading Data File on Line " + e);
        e.printStackTrace();
    }
    try {
        Log.d("MyActivity", " Close File 'is' ");
        is.close();
    } catch (IOException e) {
        e.printStackTrace();
    } 

 D/MyActivity:  Creating dailyReader Test,1,Test2,1
 D/MyActivity:  Creating dailyReader Test,2,Test2,2
 D/MyActivity:  Creating dailyReader Test,3,Test2,3-4
 D/MyActivity:  Creating dailyReader Test,1,Test2,1
 D/MyActivity:  Creating dailyReader Test,2,Test2,2
 D/MyActivity:  Creating dailyReader Test,3,Test2,3-4
 D/MyActivity:  Creating dailyReader 

Новый код, который я изменил на.По-прежнему та же проблема.

    try {
        String line = "";
        DailyReading dailyReading = new DailyReading();
        while ((line = reader.readLine()) != null) {


            Log.d("MyActivity", " Creating dailyReader "+ line);
            //Split by ,
            String[] tokens;
            tokens = line.split(",");
                //Read Data
           // DailyReading dailyReading = new DailyReading();
            dailyReading.setBookName(tokens[0]);
            dailyReading.setChapter(tokens[1]);
            dailyReading.setBookName2(tokens[2]);
            dailyReading.setChapter2(tokens[3]);
            listReadings.add(dailyReading);

               // Log.d("MyActivity", " Just Created " + dailyReading);
            }


    } catch (IOException e) {
        Log.wtf("MyActivity", " Error Reading Data File on Line " + e);
        e.printStackTrace();
    }

Показание:

 D/MyActivity:  Creating dailyReader Test,1,Test2,1
 D/MyActivity:  Creating dailyReader Test,2,Test2,2
 D/MyActivity:  Creating dailyReader Test,3,Test2,3-4
 D/MyActivity:  Creating dailyReader Test,1,Test2,1
 D/MyActivity:  Creating dailyReader Test,2,Test2,2
 D/MyActivity:  Creating dailyReader Test,3,Test2,3-4
 D/MyActivity:  Creating dailyReader 

, поскольку вы можете видеть, что оно работает в это дополнительное время внизу, которое выдает мне ошибку, Пока!= null, похоже, не работает.

Ответы [ 2 ]

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

С самого начала проблема OverLooking Whole обнаружила, что я нажал клавишу ENTER в текстовом файле, в результате чего он прочитал это как строку ... я не знал, что это возможно.спасибо за помощь мне, хотя.Другой-Дэйв указал мне в правильном направлении

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

потому что вы пытаетесь создать новый экземпляр вашего класса pojo (DailyReading) внутри цикла while

, поместите приведенный ниже код из блока while

DailyReading dailyReading = new DailyReading();

и удалите код изнутрицикл while

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