2015-11-16 4 views
0

Я работаю с файлом в android. Я использовал ниже код, и он хорошо работал в Примечании 2, в котором используется OS 4.4.2. Однако при запуске в OS 5.0.1 (Galaxy S4) появилась ошибка, как указано ниже. Что происходит в моем коде? Не могли бы вы предложить мне решить этоОшибка чтения файла в новой ОС Android 5.0.1

private boolean checkAudioFile() 
{ 
    ArrayList<String> datacheck=null; 
    try{ 
    String filepath = Environment.getExternalStorageDirectory().getPath(); 
    String filename=filepath+"/" + FILE_FOLDER + "/" + "file_list.txt" ; 
    BufferedReader in = new BufferedReader(new FileReader(filename)); 
    String audio_name; 
    datacheck = new ArrayList<String>(); 
    while ((audio_name = in.readLine()) != null) {     
     datacheck.add(audio_name); 
    } 
    in.close(); 

    } catch (IOException e) { 
     System.out.println("File Read Error"); 
    } 
    if(datacheck.isEmpty()) 
     return true; 
    else 
     return false; 
} 

Это моя ошибка в OS 5.0.1

11-16 20:42:48.483: I/System.out(16967): File Read Error 
11-16 20:42:48.483: D/AndroidRuntime(16967): Shutting down VM 
11-16 20:42:48.483: E/AndroidRuntime(16967): FATAL EXCEPTION: main 
11-16 20:42:48.483: E/AndroidRuntime(16967): Process: com.example.readfileapp, PID: 16967 
11-16 20:42:48.483: E/AndroidRuntime(16967): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.readfileapp/com.example.readfileapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.isEmpty()' on a null object reference 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread.access$900(ActivityThread.java:177) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.os.Handler.dispatchMessage(Handler.java:102) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.os.Looper.loop(Looper.java:145) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread.main(ActivityThread.java:5942) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at java.lang.reflect.Method.invoke(Native Method) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at java.lang.reflect.Method.invoke(Method.java:372) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
11-16 20:42:48.483: E/AndroidRuntime(16967): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.isEmpty()' on a null object reference 
11-16 20:42:48.483: E/AndroidRuntime(16967): at com.example.readfileapp.MainActivity.checkAudioFile(MainActivity.java:622) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at com.example.readfileapp.MainActivity.onCreate(MainActivity.java:172) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.Activity.performCreate(Activity.java:6289) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
11-16 20:42:48.483: E/AndroidRuntime(16967): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 
11-16 20:42:48.483: E/AndroidRuntime(16967): ... 10 more 
+0

Сбой в 'MainActivity.checkAudioFile'. Можете ли вы опубликовать этот код? – shhp

+0

Извините, это функция checkFile. Я отредактирую его – Jame

+0

Я его отредактировал. Я отправляю функцию выше – Jame

ответ

1

Вы должны выполнить проверку нулевой.

Вы ArrayList может быть пустым, но он также может быть пустым, и тогда вы не можете называть IsEmpty()

Изменить его к этому:

if(datacheck!=null && datacheck.isEmpty()) 

Надеется, что это помогает.

+0

Спасибо. Он работает сейчас. – Jame