2017-10-11 3 views
-1

Ich habe ein Problem mit dem Lesen und Schreiben von Dateien in den internen Speicher.Android Lesen und Schreiben von Dateien in den internen Speicher

Dies sind die Methoden i zu schreiben verwenden, um/Dateien lesen:

public static void writeFile(String fileName, String data) throws IOException { 
    File file = new File(activity.getFilesDir() + "/" + fileName); 
    file.getParentFile().mkdirs(); 
    if (file.exists()) 
     file.delete(); 
    file.createNewFile(); 
    FileOutputStream fos = new FileOutputStream(file); 
    fos.write(data.getBytes()); 
    fos.close(); 
} 

public static String readFile(String fileName) throws IOException { 
    FileInputStream fis = new FileInputStream(new File(activity.getFilesDir() + "/" + fileName)); 
    InputStreamReader isr = new InputStreamReader(fis); 
    BufferedReader br = new BufferedReader(isr); 
    StringBuilder sb = new StringBuilder(); 
    String line = br.readLine(); 
    while (line != null) { 
     sb.append(line); 
     line = br.readLine(); 
    } 
    fis.close(); 
    return sb.toString(); 
} 

Dies funktioniert:

writeFile("fileName", "someData"); 
readFile("fileName"); 

aber nicht:

writeFile("directory/filename", "someData"); 
readFile("directory/filename"); 

Aus irgendeinem Grund, den ich Get eine FileNotFoundException: (Keine solche Datei oder Verzeichnis)

Ich habe einige andere Methoden versucht, aber nichts funktioniert mit Pfaden.

+0

Wann haben Sie diese Ausnahme genau? – greenapps

+0

Sie überprüfen nicht den Rückgabewert von mkdirs(); – greenapps

+0

Sie löschen die Datei, wenn sie existiert. Das ist nicht nötig. Und Sie überprüfen nicht einmal den Rückgabewert von delete(). – greenapps

Antwort

0

Scheck Schreib- oder Lese - Speicher Erlaubnis in AndroidManifest.xml

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

Oder versuchen, wie dies in Ihrem Code

`Datei-Ordner = new File (Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) + "/ EmailClient /");

folder.mkdirs(); Datei Datei = neue Datei (Ordner, Dateiname); file.createNewFile(); `

+1

Ich versuche, den internen Speicher zu verwenden, nicht den externen. – IceRise

Verwandte Themen