# Datei erstellen



## guguli (26. Sep 2014)

Hallo zusammen,

ich schreibe eine App für mein Android und möchte gerne eine Datei auf meinen Speicher erzeugen.

Wie ich eine datei erzeuge, weiss ich bereits, aber ich weiss nicht wie der Pfad aussehen soll. 
Also wenn man eine Datei auf den Rechner erzeugt und speichert sieht der Pfad ja so ungefähr aus :

```
File file = new File("C:/Users/sia/Desktop/IKVComsol/Dist_10.txt");
```

Aber wie ist das denn auf Android?????


THX


----------



## Joose (26. Sep 2014)

Vielleicht hilft dir dieser Link weiter anddev.org - Working with files


----------



## guguli (26. Sep 2014)

Ja die seite ist sehr Hilfreich. Aber ich hab ein Problem, ich hab keine SDCart  ich muss die datei auf den Speicher des Gerätes speichern .

Da fehlt mir der Pfad dazu.


----------



## fLooojava (26. Sep 2014)

Ich denke hier bist du richtig.


----------



## guguli (26. Sep 2014)

Hi, danke erstmal.


Ich hab um eine datei zu erstellen folgende Methode benutzt:

```
protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
myText = (EditText) findViewById(R.id.myText);
		Button createButton = (Button) findViewById(R.id.btnCreate);
		Button readButton = (Button) findViewById(R.id.btnRead);

		createButton.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				createFile(myText.getText().toString());
				myText.setText("");
			}
		});
		
		readButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				readFile();
			}

			
		});

	}
private void createFile(String Text) {
		FileOutputStream fos = null;
		try {
			fos = openFileOutput("mynote.txt", MODE_PRIVATE);
			fos.write(Text.getBytes());
			Toast.makeText(getApplicationContext(), "File created succesfully",
					Toast.LENGTH_SHORT).show();
		} catch (FileNotFoundException e) {
			Log.e("CreateFile", e.getLocalizedMessage());
		} catch (IOException e) {
			Log.e("CreateFile", e.getLocalizedMessage());
		} finally {
			if (fos != null) {
				try {
					fos.flush();
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
```

Ich nehme an so musste eine File erstellt sein. Nun möchte ich gerne wissen wo ich diese Datei in meinem Gerät finden kann=????


----------



## Joose (26. Sep 2014)

Da du keinen spezifischen Ordner angegeben hast nehme ich an wird die Datei direkt im Root des internen Speichers liegen.


----------



## guguli (26. Sep 2014)

wie ich oben erwähnte, ich hab keine Sdcart und hab unter "Speicher" gesucht aber die Datei nicht gefunden.  ALso EinStellung>Optionen>Speicher
Hier finde ich aber nichts. wo soll ich denn suchen????

Oder wie kann ich einen konreten Ordner eingeben????
THX


----------



## Joose (26. Sep 2014)

Danke ich hab schon verstanden das du keine SD Karte verwendest. Deswegen habe ich auch "interner Speicher" gesagt 
Die normale Speicheransicht vom OS wird dir auch keine Dateien preisgeben. Dazu brauchst du entweder einen entsprechenden Dateiexplorer als App am Handy oder du schließt dein Handy am PC an und schaust über den Windows Explorer


----------



## dzim (26. Sep 2014)

Ich hab da folgende Hilfmethoden, die mir das File des internen Speichers ("emulated") speziell für die App zurückgeben:

```
public static File getInternalFilesDir(Context context) {
		File internalFilesDir = new File(context.getExternalFilesDir(null), "");
		if (!internalFilesDir.exists()) {
			internalFilesDir.mkdirs();
		}
		return internalFilesDir;
	}
	
	public static File getInternalCacheDir(Context context) {
		File internalFilesDir = new File(context.getExternalCacheDir(), "");
		if (!internalFilesDir.exists()) {
			internalFilesDir.mkdirs();
		}
		return internalFilesDir;
	}
```

Und wenn das Verzeichnis persistent sein soll und nicht vom Cache (kann von Android mal zischendurch gelöscht werden) oder Files (wird beim deinstallieren gelöscht) abhängig, kannst du es in etwa so irgendwo in "emulated" anlegen:

```
public File getExDir() {
		File publicDir = Environment.getExternalStorageDirectory();
		if (publicDir == null) {
			return Utils.getInternalFilesDir(mContext); // fallback
		} else {
			File exDir = new File(publicDir, "<name-of-the-target-dir>");
			if (!exDir.exists()) {
				exDir.mkdirs();
			}
			return exDir;
		}
	}
```


----------



## guguli (26. Sep 2014)

Ok, ich hab mit der readFile Methode kann ich die gespeicherte datei nochmal lesen. Aber wenn ich mein Phone mit dem Rechenr anschließe finde ich trotzdem diese Datei nicht ... Naja ich glaub die atei existiert da und darum geht es mir erstmal 

Danke.


----------



## dzim (26. Sep 2014)

Also bei mir tauchen in Windows (aber auch Linux) auch nicht immer die Datein (oder auch ganze Pfade) nicht auf. Da scheinen die von Android über das MTP nicht weitergereicht zu werden - warum auch immer - scheint auch noch gerätespezifisch zu sein. Ich hab zum entwickeln aber immer einen File Explorer (ES File Explorer) installiert, mit dem ich vorher schaue, ob die Datei exitiert. Wenn ja, kopiere ich sie "einfach" an einen Ort, den ich von Win/Linux aus sehen kann... Ist umständich, aber es geht halt nicht immer anders...


----------

