2017-11-13 12 views
-3

ちょっと、ファイルを作成すると、そのファイルが作成されているがシステムには存在しないと表示され、そのファイルに書き込む間にnullポインタの例外があります。nullポインタの例外がファイルに書き込んでいるとき

ここ
try { 
    File root = android.os.Environment.getExternalStorageDirectory(); 
    File dir = new File (root.getAbsolutePath()+ "/Sniffiing"); 
    dir.mkdirs(); 
    File file1 = new File(dir,"dump1.txt"); 
    file1.createNewFile(); 
    System.out.println(file1); 
System.out.println("Hello Buddy what are upto.....##########################"); 
    OutputStreamWriter os = new OutputStreamWriter(
             new FileOutputStream(file1)); 
    bw = new BufferedWriter(os); 
    Process process = Runtime.getRuntime().exec(
             "logcat -v threadtime -s ServiceMode"); 
    int length = process.toString().length(); 

    System.out.println("Length" + length); 

    BufferedReader reader = new BufferedReader(
             new InputStreamReader(process.getInputStream())); 

    StringBuffer output1 = new StringBuffer(); 

    while ((line = reader.readLine()) != null) { 
    bw.write(line); 
    bw.newLine(); 
    } 

} catch (IOException e) { 
} 

Logcat

D/action: 0 
D/ACTION:: BOTH 
D/Log3GState:: Accessing file 
D/Create file: /data/user/0/com.services.snifspoof.snifspoof/C_packetCapture 
D/Log3GState:: Write executable file 
D/EGL_emulation: eglMakeCurrent: 0x9ef850c0: ver 2 0 (tinfo 0x9ef831f0) 
D/EGL_emulation: eglMakeCurrent: 0x9ef850c0: ver 2 0 (tinfo 0x9ef831f0) 
D/CLOSING: BOTH 
I/System.out: *********############# 
I/System.out: *********############# File Created :- /storage/emulated/0/Sniffing/dump1.txt 
I/System.out: Length34 

      --------- beginning of crash 
E/AndroidRuntime: FATAL EXCEPTION: Thread-2 
Process: com.services.snifspoof.snifspoof, PID: 2389 
java.lang.NullPointerException: Attempt to invoke a virtual method on a null object reference 
at com.services.snifspoof.snifspoof.MainActivity$3$1.run(MainActivity.java:167) 
at java.lang.Thread.run(Thread.java:761) 
+1

もlogcatを追加します。例外を理解すると役立つ場合があります。 –

+0

あなたはREAD_WRITEアンドロイドのアクセス許可を要求するのを忘れているかもしれません。 –

答えて

0

が、これはあなたに役に立つかもしれない希望です。

マニフェストファイルに外部ストレージを読み取る権限が追加されていることを確認してください。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

書き込みファイル:

private void writeToFile(String data,Context context) { 
    try { 
     OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("dump1.txt", Context.MODE_PRIVATE)); 
     outputStreamWriter.write(data); 
     outputStreamWriter.close(); 
    } 
    catch (IOException e) { 
     Log.e("Exception", "File write failed: " + e.toString()); 
    } 
} 

読むファイル:

private String readFromFile(Context context) { 

    String ret = ""; 

    try { 
     InputStream inputStream = context.openFileInput("dump1.txt"); 

     if (inputStream != null) { 
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 
      String receiveString = ""; 
      StringBuilder stringBuilder = new StringBuilder(); 

      while ((receiveString = bufferedReader.readLine()) != null) { 
       stringBuilder.append(receiveString); 
      } 

      inputStream.close(); 
      ret = stringBuilder.toString(); 
     } 
    } 
    catch (FileNotFoundException e) { 
     Log.e("login activity", "File not found: " + e.toString()); 
    } catch (IOException e) { 
     Log.e("login activity", "Can not read file: " + e.toString()); 
    } 

    return ret; 
} 
関連する問題