webentwicklung-frage-antwort-db.com.de

Wie lese ich den Dateiinhalt vom internen Speicher - Android App?

Ich bin ein Neuling, der mit Android arbeitet. Am Ort data/data/myapp/files/hello.txt ist bereits eine Datei angelegt. Der Inhalt dieser Datei ist "Hallo". Wie lese ich den Inhalt der Datei?

35
Shan

Sehen Sie sich dies an, wie Sie Speicher in Android verwenden http://developer.Android.com/guide/topics/data/data-storage.html#filesInternal

Um Daten aus dem internen Speicher lesen zu können, benötigen Sie Ihren App-Dateiordner und lesen den Inhalt von hier aus 

String yourFilePath = context.getFilesDir() + "/" + "hello.txt";
File yourFile = new File( yourFilePath );

Sie können diesen Ansatz auch verwenden

FileInputStream fis = context.openFileInput("hello.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
    sb.append(line);
}
54
Georgy Gobozov

Eine Datei als String-Vollversion lesen (Ausnahmen behandeln, UTF-8 verwenden, neue Zeile behandeln):

// Calling:
/* 
    Context context = getApplicationContext();
    String filename = "log.txt";
    String str = read_file(context, filename);
*/  
public String read_file(Context context, String filename) {
        try {
            FileInputStream fis = context.openFileInput(filename);
            InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(isr);
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                sb.append(line).append("\n");
            }
            return sb.toString();
        } catch (FileNotFoundException e) {
            return "";
        } catch (UnsupportedEncodingException e) {
            return "";
        } catch (IOException e) {
            return "";
        }
    }

Hinweis: Sie müssen sich nicht nur mit dem Dateinamen um den Dateipfad kümmern. 

7
Skalár Wag

Rufen Sie die folgende Funktion mit Argument als Dateipfad auf:

private String getFileContent(String targetFilePath){
           File file = new File(targetFilePath);
           try {
                    fileInputStream = new FileInputStream(file);
           }
           } catch (FileNotFoundException e) {
                  // TODO Auto-generated catch block
                  Log.e("",""+e.printStackTrace());
           }
           StringBuilder sb;
           while(fileInputStream.available() > 0) {

                 if(null== sb)  sb = new StringBuilder();

            sb.append((char)fileInputStream.read());
           }
       String fileContent;
       if(null!=sb){
            fileContent= sb.toString();
            // This is your fileContent in String.


       }
       try {
          fileInputStream.close();
       }
       catch(Exception e){
           // TODO Auto-generated catch block
           Log.e("",""+e.printStackTrace());
       }
           return fileContent;
}
3
    String path = Environment.getExternalStorageDirectory().toString();
    Log.d("Files", "Path: " + path);
    File f = new File(path);
    File file[] = f.listFiles();
    Log.d("Files", "Size: " + file.length);
    for (int i = 0; i < file.length; i++) {
        //here populate your listview
        Log.d("Files", "FileName:" + file[i].getName());

    }
1
Dmarp

So lesen Sie eine Datei aus dem internen Speicher:

Rufen Sie openFileInput () auf und übergeben Sie den Namen der zu lesenden Datei. Diese Gibt einen FileInputStream zurück. Lesen Sie mit read () Bytes aus der Datei. Dann Schließen Sie den Stream mit close ().

code::

StringBuilder sb = new StringBuilder();
        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line).append("\n");
            }
            is.close();
        } catch(OutOfMemoryError om){
            om.printStackTrace();
        } catch(Exception ex){
            ex.printStackTrace();
        }
        String result = sb.toString();
0
jlopez

Ich bevorzuge Java.util.Scanner:

try {
    Scanner scanner = new Scanner(context.openFileInput(filename)).useDelimiter("\\Z");
    StringBuilder sb = new StringBuilder();

    while (scanner.hasNext()) {
        sb.append(scanner.next());
    }

    scanner.close();

    String result = sb.toString();

} catch (IOException e) {}
0
Hafez Divandari