it-swarm.com.de

Android: Wie schreibe ich eine Datei in den internen Speicher?

Ich entwickle eine einfache Android-Anwendung und muss eine Textdatei im internen Speichergerät schreiben. Ich weiß, dass es viele Fragen (und Antworten) zu diesem Thema gibt, aber ich kann wirklich nicht verstehen, was ich falsch mache.

Dies ist der Code, den ich in meiner Aktivität zum Schreiben der Datei verwende:

public void writeAFile(){
    String fileName = "myFile.txt";
    String textToWrite = "This is some text!";
    FileOutputStream outputStream;

   try {
      outputStream = openFileOutput(fileName , Context.MODE_PRIVATE);
      outputStream.write(textToWrite.getBytes());
      outputStream.close();
   } catch (Exception e) {
     e.printStackTrace();
   }
}

Ich kann wirklich nicht verstehen, welchen Fehler ich mache. Außerdem habe ich auf meinem Emulator in Android Studio und auf meinem Telefon versucht, this project zu verstehen, wo ich etwas falsch mache, aber selbst mit diesem Projekt wird keine Datei auf das Telefon oder den Emulator geschrieben.

BEARBEITEN: Ich weiß, dass keine Datei in meinen internen Speicher geschrieben wird, da ich versuche, den Inhalt der Datei nach dem Schreiben mit folgendem Code zu lesen:

public void ReadBtn(View v) {
    //reading text from file
    try {
        FileInputStream fileIn=openFileInput("myFile.txt");
        InputStreamReader InputRead= new InputStreamReader(fileIn);

        char[] inputBuffer= new char[READ_BLOCK_SIZE];
        String s="";
        int charRead;

        while ((charRead=InputRead.read(inputBuffer))>0) {
            String readstring=String.copyValueOf(inputBuffer,0,charRead);
            s +=readstring;
        }
        InputRead.close();
        textmsg.setText(s);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Es wird überhaupt nichts gezeigt.

11
delca85

Verwenden Sie den folgenden Code, um eine Datei in den internen Speicher zu schreiben 

EDIT: fügte e.printStackTrace(); hinzu, um den Block als bewährte Methode und Berechtigungserinnerungen zu erfassen

public void writeFileOnInternalStorage(Context mcoContext,String sFileName, String sBody){      
    File file = new File(mcoContext.getFilesDir(),"mydir");
    if(!file.exists()){
        file.mkdir();
    }

    try{
        File gpxfile = new File(file, sFileName);
        FileWriter writer = new FileWriter(gpxfile);
        writer.append(sBody);
        writer.flush();
        writer.close();

    }catch (Exception e){
        e.printStackTrace();

    }
}

Vergessen Sie nicht, Schreib- und Leseberechtigungen für externes Speichermedium im Manifest hinzuzufügen:

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
16
Sandeep dhiman

weder auf dem Telefon noch auf dem Emulator wird eine Datei geschrieben.

Ja da ist. Es wird geschrieben, was das Android-SDK als interner Speicher bezeichnet. Dies ist nicht was Sie als Benutzerals "internen Speicher" betrachten, und Sie als Benutzer können nicht sehen, was sich im internen Speicher auf einem Gerät befindet (es sei denn, es ist verwurzelt).

Wenn Sie eine Datei dahin schreiben möchten, wo die Benutzer sie sehen können, verwenden Sie external storage .

Dieses grundlegende Thema der Android-Entwicklung wird in jedem anständigen Buch über die Android-App-Entwicklung behandelt.

8
CommonsWare

Speichern Sie im internen Speicher

        data="my Info to save";
        try {
           FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
           fOut.write(data.getBytes());
           fOut.close();
           Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
        }
        catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
        }

Aus internem Speicher lesen

      try {
           FileInputStream fin = openFileInput(file);
           int c;
           String temp="";
           while( (c = fin.read()) != -1){
              temp = temp + Character.toString((char)c);
           }
           tv.setText(temp);
           Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
        }
        catch(Exception e){
        }

Haben Sie um Erlaubnis gebeten, auf einen externen Speicher zu schreiben? 

https://developer.Android.com/training/basics/data-storage/files.html#GetWritePermission

Möglicherweise schluckt Ihr try\catch-Block eine Ausnahme, die Ihnen sagen könnte, was das Problem ist. 

Sie scheinen auch nicht den Pfad zum Speichern festzulegen.

beispiel: android Verwendung von Environment.getExternalStorageDirectory ()

0
Kuffs