# Wo lege ich im Programm texdteien oder ini's ab



## BergJava (24. Jan 2015)

Hallo, mein Programm soll nachträglich angepasst werden, und dafür wollte ich Textdateien mit werten abspeichern, oder halt inis. Wie geht das. 
Welchen Ordner nehme ich dafür, oder muss ich im Geräte( Eigenen Dateien) einen Ordner erstellen. Ich denke das beim Speichern meiner App auf das Gerät automatisch Ordner meine Anwendung angelegt wird. Aber wie speicher ich da Textdateien rein...?

Danke für die Hilfe

Habe jetzt zwar was gefunden


```
String filename = "myfile.txt";
        	String string = "Hello world!";
        	FileOutputStream outputStream;

        	try {
        	  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
        	  outputStream.write(string.getBytes());
        	  outputStream.close();
        	} catch (Exception e){
        		Log.d(LOG_TAG, "FS"+ e.getMessage() );
        	
        	}
```

aber wo legt der das ab, wenn ich es teste finde ich nichts auf dem Handy?


----------



## Network (24. Jan 2015)

> Context.MODE_PRIVATE



Liegt im Root-Ordner.
Context | Android Developers


----------



## BergJava (24. Jan 2015)

Danke für die Antwort. Kann ich den irgendwie mit dem PC ansehen, wo steckt der ;D?


----------



## BergJava (24. Jan 2015)

Oder anders wie such in nach dem File ob es exisitiert?


So:


```
File file = new File("/MeinOrdner/meinet.ini");
              if(file.exists()){
```


----------



## dzim (25. Jan 2015)

Android erlubt dir (ohne root) keinen Vollzugriff auf das System. Dein Bsp. wird also nicht funktionieren.
Als erstes ist es wichtig zu verstehen, welche Optionen du has:
Storage Options | Android Developers

Für den Dateizugriff gibt es zum einen die Klasse Environment:
Environment | Android Developers

Allerdings empfiehlt sich die Context-Klasse mehr:
Context | Android Developers

Wenn du den ersten Artikel gelesen und verstanden hast, sollte dir durch die JavaDoc klar werden, dass die Methode in _Context#getExternalFilesDir_ interessant für dich sein könnte.
Der Pfad wäre _*<ersteinmal-uninteressanter-Android-Pfad>/data/<package-name-deiner-app>/files*_.
Lesen können das IMHO alle. Gelöscht wird nur bei Deinstallation der App.
Wenn du dein Telefon am PC anschliesst, kannst du direkt per _*/data/<package-name-deiner-app>/files*_ da hin. Die Verzeichnisstruktur darüber wird durch Android vor dir verborgen (Zugriff auf Android erfolgt in aller Regel ausschliesslich über das MTP-Protokoll - Ausnahme können alte 2.x-Versionen mit externer SD-Karte sein).


----------



## BergJava (25. Jan 2015)

Danke, kann es sein das das nur funktioniert wenn ich die app richtig auf das gerät speicher und nicht beim testen über eclipse?

grüße


----------



## dzim (25. Jan 2015)

Kommt drauf an. Verwendest du einen Emulator oder etwas ähnliches (z.B. Genymotion)? Ich denke, die sollten das schon unterstützen.
Ich würde immer ein echtes Gerät zum entwickeln nehmen, finde ich viel praktischer! Vielleicht eines, das ausgedient hat, aber noch genügend aktuell ist, um es als Entwicklungsplatform zu nutzen. Oder ein gebrauchtes Nexus 5 oder so (also was billiges).


----------



## BergJava (25. Jan 2015)

Ja habe ich ja, also nix virtuelles..

Folgenden Hilfsklasse habe ich


```
public class SchreibenDat {
	
	private Context context;
	
	public SchreibenDat(Context context) {
		// TODO Auto-generated constructor stub
		this.context =context;
	}




 public void meinedatt(){
	
	String textfuerausgabe = "0.5";
	
	
   File Meinspeicherort = this.context.getDir("MeineDat", context.MODE_PRIVATE);
    
    textfuerausgabe = Meinspeicherort.getPath();
    Log.d(LOG_TAG,"Ausgebetxt :" + textfuerausgabe);
   //Ausgabe.setText(textfuerausgabe);
    
    boolean b = true;
    
    b = Meinspeicherort.canWrite();
    
    
    
    
      String s = new Boolean(b).toString();
      
      
      Log.d(LOG_TAG,"Ausgabe :" +s); //Ausgabe.setText(s);
      
      Meinspeicherort = new File(Meinspeicherort, "meine.ini");
      
      try {
    	  
      FileOutputStream f = new FileOutputStream(Meinspeicherort);
         PrintWriter pw = new PrintWriter(f);
         pw.println("eine zeile");
         pw.println("zweite zeile");
         pw.flush();
         pw.close();
         f.close();
      }  catch ( IOException e){
     
    	  Log.d(LOG_TAG,"FehlerSpeicher :" +e.getMessage());
       
      }
      
	}
```

Das klappt aber nicht oder ich bin zu blöd es zu finden...
Danke für deine Links, aber ich brauche da ein Startkabel!


----------



## dzim (25. Jan 2015)

this.context.getDir --> this.context.getExternalFilesDir


----------



## BergJava (25. Jan 2015)

Danke nach Freigabe im Manifest hat das geklappt, aber eigentlich sollte der ordner ins root Verzeichnis ?


----------



## dzim (25. Jan 2015)

Dann brauchst du wohl eher *Environment#getExternalStorageDirectory*
Environment | Android Developers


----------



## BergJava (26. Jan 2015)

Hallo, das ist ja auch auf der SD, jedenfalls gerate beim Testen.
Frage: Wenn ich meine App (ich betätige run in eclipse) teste auf meinem Telefon, wo  wird die dann gespeichert? Wie erzeuge ich dann einen Ordner die bei der App liegt, und wie kann ich auf diesen Ordner zugreifen, auch beim Test. Alle installierten Apps erzeugen ja einen Ordner im root. Genau das sollte doch auch beim Testen gehen?
Danke!


----------



## BergJava (27. Jan 2015)

Hallo, selbst bei erstellen der .apk und auführen finde ich keinen Ordner unter eigen Dateien im Telefon. Also der Ordner soll sichtbar im EigenDateien ordner liegen. Welche befehl brauche ich damit er einen Ordner in EigenDateien anlegt und meine in speichert. Der MOD_Privat speichert zwar aber der User hat keinen zugriff drauf. Was ich will ist, er sucht Eigene Dateien auf dem Telefon, betätigt den und findet meinen Ordner. Danke


----------



## dzim (27. Jan 2015)

dzim hat gesagt.:
			
		

> Dann brauchst du wohl eher Environment#getExternalStorageDirectory


Das nutze ich auch und es klappt. Verzeichnisse erstellt man wie immer über ein File-Objekt und der Methode #mkdir() oder #mkdirs()


----------



## BergJava (27. Jan 2015)

Sorry - WAS ? mkdir oder mkdirs. ? Geht ein bisschen genauer? DANKE

Habe jetzt soviel gelesen, bin total neben der Spur..


----------



## dzim (27. Jan 2015)

Also ich weiss allmählich wirklich nicht mehr, was ich von dir halten soll.
Das sind ja nun eigentlich schon fast schon veraltete Informationen, die man vom Basis-Java her kennen sollte!

Android:
File | Android Developers

Java:
File (Java Platform SE 7 )

Ich denke, dass du dir mit Android ein zu hohes Ziel gesetzt hast. Lerne erst einmal Java  richtig kennen und dann Android. Dir scheint es ja wirklich immer wieder an Basis-Wissen zu mangeln!

(Sorry, etwas hart, ich weiss. Aber ich weiss allmählich nicht mehr, wie ich dir überhaupt helfen kann...)


----------



## BergJava (27. Jan 2015)

Danke

Es würde mir schon helfen, zum besseren verstehen, wenn du mir die Methode mal zeigst die einen Ordner in die Eigene Dateien de Telefon  schreibt, das mit mkDir schön und gut, aber was steht im Pfad usw..

Du wirfst mit brocken um dich, und meinst man müsst damit kommen?

Ja Androide ist neu für mich! Entschuldige. 

Zu meinen Kenntnissen, das Programm was ich schreib läuft in Java swing perfekt! Nur Androide mach mir NOCH Mühe


----------

