1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

in txt datei schreiben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von jim, 28.09.2010.

  1. jim, 28.09.2010 #1
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    Hallo liebesForum,

    ich weis das dieses thema schon oft dikutiert wurde aber irgendwie komm ich trotzdem nicht weiter. ich möchte txt in einer Datei speichern aus meiner app heraus(highscore liste eines spiels) ich benutze folgenden Code
    PHP:
    public void writeToFile(String toWrite){
            
            
    char[] buf = new char[toWrite.length()];
            for(
    int i 0toWrite.length();i++){
                
    buf[i] = toWrite.charAt(); 
                }
            
            try {
        
                
    FileOutputStream fOut;
                
    String jv = (String)Environment.getExternalStorageDirectory().getPath();
                
    fOut =  _context.openFileOutput(jv,_context.MODE_PRIVATE);
                 
    ObjectOutputStream oos = new ObjectOutputStream(fOut);
                    
    oos.writeObject(buf); 
                    
    oos.close();

                } catch (
    java.io.IOException e) {
                  
    //do something if an IOException occurs.
                
    }
        }
    Hier bekomme ich eine fehlermeldung wobei er den relativen und nicht den absoluten pfad haben möchte. Kann mir da jemand weiter helfen?

    LG Jim
     
  2. Fr4gg0r, 28.09.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Ich tu das einfacher so:

    Code:
    BufferedWriter out = null;
    try {
    	out = new BufferedWriter(new FileWriter("/sdcard/meinFile.txt"));
            out.write(meinInhalt);
            out.close();
          } catch (Exception e) { //fehlende Permission oder sd an pc gemountet}
    
    
     
    jim bedankt sich.
  3. Unicate, 28.09.2010 #3
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Oder so:

    PHP:
    FileOutputStream out = new FileOutputStream(new File("whereever/txt.txt"));
    out.write(inhaltsString.getBytes());
    out.close;

     
  4. jim, 28.09.2010 #4
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    hey, ja vielen dank klappt wunderbar,nun überschreibe ich aber jedesmal die Datei. Wie stelle ich es am besten an wenn ich nur was anfügen möchte, oder sollte ich(da es sich eh um ein highscore handelt) erst auslesen, einsortieren und dann schreiben??.

    LG Jim
     
  5. v Ralle v, 29.09.2010 #5
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Auslesen, einsortieren und schreiben, finde ich am einfachsten und mir ist jetzt auch keine andere Methode bekannt.
     
  6. BenOtto, 29.09.2010 #6
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Für Highscores eignet sich auch ein Serialisierbares Objekt. Bspw:
    Code:
    public class Highscores implements Serializable {
      private static final int MAX_HIGHSCORES = 10;
      private String[] mNames = new String[MAX_HIGHSCORES];
      private int[] mScores  = new int[MAX_HIGHSCORES];
      // Methoden zum setzen und lesen der Highscores
      /*
      ...
      */
    }
    
     
  7. felix123, 26.10.2010 #7
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Hallo,

    ich habe auch eine Frage zum selben Thema. Mein Programm liest ständig die Daten vom beschleunigungssensor aus und gibt sie in Textfeldern aus. Jetzt sollen die Werte in einer Datei gespeichert werden.

    Aber ich schaffe nur den ersten Wert zu speichern, weil ich nicht weiß wo mein Programm zu Ende ist, allerdings muss ich ja mein "close" ans Ende des Programms setzen ...

    Könnte mir jemand erklären was ich dabei beachten muss, leider habe ich den Code nicht auf diesem Computer, aber wenn nötig poste ich ihn später.

    mfg
     
  8. DieGoldeneMitte, 26.10.2010 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Nimm flush() statt close() oder öffne die Date zum "anhängen" vor jedem Schreiben und mache dann direkt close(). Min. eins davon müsste gehen.
     
  9. felix123, 26.10.2010 #9
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Hallo, ich nehme immer flush und danach close, macht man das nicht so?

    Hier ist mein bisheriger Code. Wäre nett wenn sich den mal kurz jemand ansehen könnte. Ich darf die Datei nur einmal öffnen und nicht jedes mal wenn wieder was reingeschrieben wird. Die Werte die ich schreiben möchte kommen im millisekunden Takt.

    Code:
    package com.paad.forceometer;
    
    import java.util.Timer;
    import java.util.TimerTask;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.*;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    public class Forceometer extends Activity {
        SensorManager sensorManager;
        TextView accelerationTextView;
        TextView maxAccelerationTextView;
        TextView accelerationXTextView;
        TextView accelerationYTextView;
        TextView accelerationZTextView;
        TextView accelerationXTextViewm;
        TextView accelerationYTextViewm;
        TextView accelerationZTextViewm;
        TextView accelerationLeftTextView;
        TextView accelerationRightTextView;
        double currentAcceleration = 0;
        double maxAcceleration = 0;
        float u = 0;
        float h = 0;
        File gpxfile;
        float r = 0;
        ProgressBar myProgressBar;
        ProgressBar myProgressBarL;
        String ax, ay;
        FileWriter writer = null;
    
        float calibrateX, calibrateY, calibrateZ, z, y, x, cHx, cHy, cHz,
                accLeftRight, gy, gx, gz;
        private Button reset;
        private Button calibrate;
        DecimalFormat f = new DecimalFormat("#0.00");
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
    
            accelerationXTextView = (TextView) findViewById(R.id.accelerationX);
            accelerationYTextView = (TextView) findViewById(R.id.accelerationY);
            accelerationLeftTextView = (TextView) findViewById(R.id.accelerationLeft);
            accelerationRightTextView = (TextView) findViewById(R.id.accelerationRight);
            accelerationZTextView = (TextView) findViewById(R.id.accelerationZ);
            accelerationXTextViewm = (TextView) findViewById(R.id.accelerationXm);
            accelerationYTextViewm = (TextView) findViewById(R.id.accelerationYm);
            accelerationZTextViewm = (TextView) findViewById(R.id.accelerationZm);
            myProgressBar = (ProgressBar) findViewById(R.id.progressbar_Horizontal);
            myProgressBar.setMax(100);
    
            // Calibrate
            this.calibrate = (Button) this.findViewById(R.id.calibrate);
            this.calibrate.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    calibrateX = cHx;
                    calibrateY = cHy;
                    calibrateZ = cHz;
                }
            });
    
            // Reset
            this.reset = (Button) this.findViewById(R.id.reset);
            this.reset.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    u = 0;
                    h = 0;
                    r = 0;
                }
            });
    
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
            Sensor accelerometer = sensorManager
                    .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            sensorManager.registerListener(sensorEventListener, accelerometer,
                    SensorManager.SENSOR_DELAY_FASTEST);
    
            Timer updateTimer = new Timer("gForceUpdate");
            updateTimer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    updateGUI();
                }
            }, 0, 5000);
            try {
                writer = new FileWriter(gpxfile);
                writer.flush();
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        private final SensorEventListener sensorEventListener = new SensorEventListener() {
            float calibration = SensorManager.STANDARD_GRAVITY;
    
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }
    
            public void onSensorChanged(SensorEvent event) {
                x = event.values[0];
                y = event.values[1];
                z = event.values[2];
    
                cHx = event.values[0];
                cHy = event.values[1];
                cHz = event.values[2];
    
                accLeftRight = ((y - calibrateY) / calibration);
    
                x = Math.abs((x - calibrateX) / calibration);
                y = Math.abs((y - calibrateY) / calibration);
                z = Math.abs((z - calibrateZ) / calibration);
    
            }
        };
    
        private void generateCsvFile(String sFileName) {
    
            boolean exists = (new File("test1.txt")).exists();
            try {
    
                if (!exists) {
                    File root = Environment.getExternalStorageDirectory();
                    gpxfile = new File(root, sFileName);
                    writer = new FileWriter(gpxfile);
                    exists = true;
                }
                if (exists) {
                    writer = new FileWriter(gpxfile);
                    writer.append(ax);
                    writer.append("\n");
    
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private void updateGUI() {
            runOnUiThread(new Runnable() {
                public void run() {
    
                    if (accLeftRight > 0) {
                        String accLeftRightS = f.format(Math.abs(accLeftRight))
                                + " rechts";
                        accelerationRightTextView.setText(accLeftRightS);
                        accelerationRightTextView.invalidate();
                    }
                    if (accLeftRight < 0) {
                        String accLeftRightS = f.format(Math.abs(accLeftRight))
                                + " links";
                        accelerationLeftTextView.setText(accLeftRightS);
                        accelerationLeftTextView.invalidate();
                    }
    
                    if (y > u) {
                        u = y;
                        String maxY = f.format(u) + " max y";
                        accelerationYTextViewm.setText(maxY);
                        accelerationYTextViewm.invalidate();
                    }
                    if (z > h) {
                        h = z;
                        String maxZ = f.format(h) + " max z";
                        accelerationZTextViewm.setText(maxZ);
                        accelerationZTextViewm.invalidate();
                    }
                    if (x > r) {
                        r = x;
                        String maxX = f.format(r) + " max x";
                        accelerationXTextViewm.setText(maxX);
                        accelerationXTextViewm.invalidate();
                    }
    
                    ax = f.format(x) + " x";
                    accelerationXTextView.setText(ax);
                    accelerationXTextView.invalidate();
                    ay = f.format(y) + " y";
                    accelerationYTextView.setText(ay);
                    accelerationYTextView.invalidate();
                    String az = f.format(z) + " z";
                    accelerationZTextView.setText(az);
                    accelerationZTextView.invalidate();
                    myProgressBar.setProgress((int) (y * 100));
                    generateCsvFile("test1.txt");
                }
            });
        };
    }
     
  10. Fr4gg0r, 26.10.2010 #10
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Wieso willste ie ganze Zeit die Werte in einer Txt drin haben...
    einmal am Ende reinschreiben sollte doch reichen.
     
  11. felix123, 26.10.2010 #11
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Meinst du ich soll die ganzen Werte erst in ein Array speichern und dann erst das Array in die txt Datei?

    Ich brauche ja die Werte über die ganze Zeit, gemessen wird während einer Autofahrt.
     
  12. Fr4gg0r, 26.10.2010 #12
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    wenn du die werte in nem arry hälst sind sie im ram.
    Wenn du sie in ner .txt speicherst sind sie im flash.

    Vom flash lesen ist doch viel langsamer, vom Schreiben brauchen wir nicht erst reden. ;)
     
  13. felix123, 26.10.2010 #13
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Also ich erläutere nochmal das Problem kurz.

    Ich will eine Testfahrt mit meinem Auto machen und die Entwirklung des G-Kraft Verlaufs in einer TXT Datei speichern. Damit ich später eine "virtuelle" Testfahrt machen kann indem ich nurnoch die entstandene Datei durchgehe.

    Aber erstes Problem.

    Das Array ist begrenzt und kann nicht beliebig groß werden so wie bei JavaScript, wo ich ein Array festlege und die Größe ist noch nicht sicher.

    Zweites Problem.

    Ich suche Gedade eine möglichkeit das ganze dann in die Textdatei zu speichern, aber irgendwie bekomme ich es gerade nochnicht hin das erstellte array in die Datei zu speichern.

    Drittes Problem.

    Wann in meinem Programmcode rufe ich die Methode auf die die Datei speichert? Muss ich dazu einen Button Klick verwenden oder gibt es auch ein "Programmende" an dem das geschieht?


    Hab das Programm jetzt umgeschrieben, aber es ist sau langsam und stürzt dann ab, obwohl ich die Daten erst in die Datei schreiben will wenn ich den "Reset" Button betätige...

    Code:
    package com.paad.forceometer;
    
    import java.util.Timer;
    import java.util.TimerTask;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.*;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    public class Forceometer extends Activity {
        SensorManager sensorManager;
        TextView accelerationTextView;
        TextView maxAccelerationTextView;
        TextView accelerationXTextView;
        TextView accelerationYTextView;
        TextView accelerationZTextView;
        TextView accelerationXTextViewm;
        TextView accelerationYTextViewm;
        TextView accelerationZTextViewm;
        TextView accelerationLeftTextView;
        TextView accelerationRightTextView;
        double currentAcceleration = 0;
        double maxAcceleration = 0;
        float u = 0;
        float h = 0;
        File gpxfile;
        String[] names = new String[100];
        float r = 0;
        ProgressBar myProgressBar;
        ProgressBar myProgressBarL;
        int iterator = 0;
        String ax, ay;
        FileWriter writer = null;
    
        float calibrateX, calibrateY, calibrateZ, z, y, x, cHx, cHy, cHz,
                accLeftRight, gy, gx, gz;
        private Button reset;
        private Button calibrate;
        DecimalFormat f = new DecimalFormat("#0.00");
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
    
            accelerationXTextView = (TextView) findViewById(R.id.accelerationX);
            accelerationYTextView = (TextView) findViewById(R.id.accelerationY);
            accelerationLeftTextView = (TextView) findViewById(R.id.accelerationLeft);
            accelerationRightTextView = (TextView) findViewById(R.id.accelerationRight);
            accelerationZTextView = (TextView) findViewById(R.id.accelerationZ);
            accelerationXTextViewm = (TextView) findViewById(R.id.accelerationXm);
            accelerationYTextViewm = (TextView) findViewById(R.id.accelerationYm);
            accelerationZTextViewm = (TextView) findViewById(R.id.accelerationZm);
            myProgressBar = (ProgressBar) findViewById(R.id.progressbar_Horizontal);
            myProgressBar.setMax(100);
    
            // Calibrate
            this.calibrate = (Button) this.findViewById(R.id.calibrate);
            this.calibrate.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    calibrateX = cHx;
                    calibrateY = cHy;
                    calibrateZ = cHz;
                }
            });
    
            // Reset
            this.reset = (Button) this.findViewById(R.id.reset);
            this.reset.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    u = 0;
                    h = 0;
                    r = 0;
    
                    generateCsvFile("felixtest.csv");
                }
            });
    
            sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    
            Sensor accelerometer = sensorManager
                    .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            sensorManager.registerListener(sensorEventListener, accelerometer,
                    SensorManager.SENSOR_DELAY_FASTEST);
    
            Timer updateTimer = new Timer("gForceUpdate");
            updateTimer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    updateGUI();
                }
            }, 0, 20);
        }
    
        private final SensorEventListener sensorEventListener = new SensorEventListener() {
            float calibration = SensorManager.STANDARD_GRAVITY;
    
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }
    
            public void onSensorChanged(SensorEvent event) {
                x = event.values[0];
                y = event.values[1];
                z = event.values[2];
    
                cHx = event.values[0];
                cHy = event.values[1];
                cHz = event.values[2];
    
                accLeftRight = ((y - calibrateY) / calibration);
    
                x = Math.abs((x - calibrateX) / calibration);
                y = Math.abs((y - calibrateY) / calibration);
                z = Math.abs((z - calibrateZ) / calibration);
    
            }
        };
    
        private void generateCsvFile(String sFileName) {
    
            File root = Environment.getExternalStorageDirectory();
            int i = 0;
            try {
                gpxfile = new File(root, sFileName);
                writer = new FileWriter(gpxfile);
                while (i < 100) {
                    writer.append(names[i]);
                    writer.append("\n");
                    i++;
                }
                writer.flush();
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        private void updateGUI() {
            runOnUiThread(new Runnable() {
                public void run() {
                    if(iterator<100){
                        iterator++;
                    }
                    
                    if (accLeftRight > 0) {
                        String accLeftRightS = f.format(Math.abs(accLeftRight))
                                + " rechts";
                        accelerationRightTextView.setText(accLeftRightS);
                        accelerationRightTextView.invalidate();
                    }
                    if (accLeftRight < 0) {
                        String accLeftRightS = f.format(Math.abs(accLeftRight))
                                + " links";
                        accelerationLeftTextView.setText(accLeftRightS);
                        accelerationLeftTextView.invalidate();
                    }
    
                    if (y > u) {
                        u = y;
                        String maxY = f.format(u) + " max y";
                        accelerationYTextViewm.setText(maxY);
                        accelerationYTextViewm.invalidate();
                    }
                    if (z > h) {
                        h = z;
                        String maxZ = f.format(h) + " max z";
                        accelerationZTextViewm.setText(maxZ);
                        accelerationZTextViewm.invalidate();
                    }
                    if (x > r) {
                        r = x;
                        String maxX = f.format(r) + " max x";
                        accelerationXTextViewm.setText(maxX);
                        accelerationXTextViewm.invalidate();
                    }
    
                    ax = f.format(x) + " x";
                    accelerationXTextView.setText(ax);
                    accelerationXTextView.invalidate();
                    ay = f.format(y) + " y";
                    accelerationYTextView.setText(ay);
                    accelerationYTextView.invalidate();
                    String az = f.format(z) + " z";
                    accelerationZTextView.setText(az);
                    accelerationZTextView.invalidate();
                    myProgressBar.setProgress((int) (y * 100));
                    generateCsvFile("test1.txt");
    
                    if (iterator < 100) {
                        names[iterator] = ax;
                    }
                }
            });
        };
    }
     
    Zuletzt bearbeitet: 26.10.2010
  14. Fr4gg0r, 26.10.2010 #14
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Achso, ok.
    Dann müsstest du halt vor jedem Speichern die Datei erst einlesen, den alten Text in nem StringBuilder speichern, den neuen hinzufügen und dann speichern.
     
  15. felix123, 26.10.2010 #15
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Problem ist jetzt, sobald ich das Array am Anfang zu groß mache Startet das Programm garnicht. Wenn ich das Array auf 100 begrenze läuft es, aber nur langsam ... zumindest speichert er mir aber die Werte nacheinander in meine Datei so wie ich will.

    Was meinst du mit StringBuilder, bin leider nochtnicht so gut in Android ;)

    Hab jetzt nachgeschaut was ein StringBuilder ist und probiers damit.


    Also wenn ich durch einen String Builder einen rießen String erzeuge und den dann am Schluss auf einmal abspeichere wird das Programm nach Sekunden auch total langsam. =/
     
    Zuletzt bearbeitet: 26.10.2010
  16. Fr4gg0r, 26.10.2010 #16
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Also ich würde es erstmal einfach eine ArrayList soweit befüllen wies geht ;)
    Brauchst du bei einer Autofahrt Daten in ms Abständen?

    Du könntest zb 3 ArrayList<Float> haben und da kontinuirlich die Daten hinzufügen.
     
    felix123 bedankt sich.
  17. felix123, 26.10.2010 #17
    felix123

    felix123 Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    18.10.2010
    Also ich glaub ich habs jetzt geschafft :) Ich probiers noch weiter aus.

    Allerdings muss ich jetzt den Reset Button drücken um das ganze abzuspeichern bzw. die Datei zu schließen. Kann ich das auch anders lösen? Beim Beenden des Programms durch den Zurück Button auf dem Dell Streak soll automatisch die Datei geschlossen werden.
     
    Zuletzt bearbeitet: 26.10.2010
  18. qwert_zuiopue, 11.07.2012 #18
    qwert_zuiopue

    qwert_zuiopue Android-Hilfe.de Mitglied

    Beiträge:
    124
    Erhaltene Danke:
    5
    Registriert seit:
    11.07.2012
    Hallo,

    ich mache auch meine ersten Versuche mit Android und scheitere momentan daran, eine Datei auf der SD-Karte abzuspeichern.
    Folgender Versuch:

    Code:
    String EXTERNAL_STORAGE = Environment.getExternalStorageDirectory().toString();
        		
        		BufferedWriter bw = new BufferedWriter(new FileWriter(EXTERNAL_STORAGE+"/"+"dateiname"));
    bw.write(inhaltsstring);
    bw.flush();
    bw.close();
    
    schlägt allerdings fehl. Die Datei lässt sich nicht auf der SD-Karte finden. Ich habe die Permission in die Manifest eingetragen.
    Was mache ich falsch?

    Vielen Dank!
     
  19. v Ralle v, 11.07.2012 #19
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Stürzt die App ab? Wenn ja, was steht in Logcat?
     
  20. qwert_zuiopue, 12.07.2012 #20
    qwert_zuiopue

    qwert_zuiopue Android-Hilfe.de Mitglied

    Beiträge:
    124
    Erhaltene Danke:
    5
    Registriert seit:
    11.07.2012
    Nein, die App stürzt nicht ab. Wenn ich sie aber auf dem virtuellen Android-Gerät laufen lasse, steht im Logcat "Permission denied", obwohl ich die Erlaubnis in der Manifest angefordert habe.
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android textview anderer activity lesen