Android Objekt in bestimmten Pfad auf Android-gerät speichern

R

Ranjo

Mitglied
Hallo,

wie speicher ich ein Objekt unter einen bestimmten Pfad?
Ich erhalte immer eine FileNotFoundException.

Hat es vieleicht mit der angabe des Speicherpfades zu tun?

HTML:
	FileOutputStream file;
		try {
			file = new FileOutputStream("/Documents/"+fileName);
			ObjectOutputStream oas = new ObjectOutputStream(file);
			oas.writeObject(automaton);
			oas.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Danke
Ranjo
 
R

Robokopp

Bekanntes Mitglied
Beispielsweise so:


Environment.getExternalStorageDirectory().toString()+"/Documents/"+fileName
 
Bleiglanz

Bleiglanz

Gesperrter Benutzer
Schreibrechte?

Meinst du wirklich "/Documents", unter Linux schreibt man normalerweise nicht ins Root
 
schlingel

schlingel

Gesperrter Benutzer
Siehe Doku.

Wenn du auf den External Storage schreiben möchtest, so wie es Robokopp vorschlägt und ich auch empfehlen würde, musst du noch die Permission dafür setzen.
 
R

Ranjo

Mitglied
Und wie setze ich die Permission?
Das steht nicht wirklich in der Api oder?

Environment.getExternalStorageDirectory().setWritable(true); ?? Funktioniert jedenfalls nicht


Hie rnochmal meine Methode:

Code:
		FileOutputStream newFile;
	//	Environment.getExternalStorageDirectory().setWritable(true);
		File file = new File("/sdcard/Android/data/atfs/"+fileName+".atfs");

			try {
				file.mkdir();
				file.createNewFile();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
	
			try {
				newFile = new FileOutputStream(file.getAbsolutePath());
				ObjectOutputStream oas = new ObjectOutputStream(newFile);
				oas.writeObject(automaton);
				oas.close();
				newFile.close();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
 
R

Ranjo

Mitglied
Erhalte nun :W/System.err(3668): java.io.IOException: open failed: ENOENT (No such file or directory)

Edit: gemounnted ist der Speicher, ich habe auch schreibrechte, aber bekomme immer noch die Fehlermeldung open failed: ENOENT (No such file or directory)
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
[xml]
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
[/xml]

in die Manifest eintragen.

Erhalte nun :W/System.err(3668): java.io.IOException: open failed: ENOENT (No such file or directory)

Dann existiert wohl dein Ordner noch nicht. mkdir() oder mkdirs() von File kann dir da weiterhelfen
 
R

Ranjo

Mitglied
[xml]
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
[/xml]

in die Manifest eintragen.



Dann existiert wohl dein Ordner noch nicht. mkdir() oder mkdirs() von File kann dir da weiterhelfen

Hey Danke für die Antwort ;)

mkdirs() ist die Lösung. Habe gedacht, dass mkdir() auch die fehlenden Überordner erstellt.
Problem somit gelöst!

Danke für eure Hilfe
Ranjo
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben