
[Android] Zápis do textového souboru
V příloze mám příklad ReadWriteDemo s knihy "Programujeme pro android" který zapisuje do textového souboru funguje v mém mobilu v pořádku problém je v tom že nemohu najít ten soubor "soubor.txt" v mobilu pomocí aplikace Správce souboru v mobilu kde je chyba? díky
Programuješ? Začni trebárs tu: https://android.stackexchange.com/questions/46926/android-folder-hierarchy/46934#46934
Já jsem ten soubor hledal tím způsobem a to s pomoci hledej soubor "soubor.txt" to nepomůže ? díky
A hledáš soubor.txt nebo Soubor.txt? Na Linuxu to není jedno.
To mě taky napadlo že není jedno "Soubor.txt" a "soubor.txt" .Ještě jestli do toho nemluví mody zápisu
MODE_PRIVATE - jedná se o výchozí režim,ve kterém je vytvořený soubor přístupný pouze z volající aplikace(nebo ze všech aplikací sdílející stejné uživatelské ID)
MODE_APEND - jedná se o režim, ve kterém se data vloží na konec souboru(pokud již existuje).
MODE_WORD_READABLE -jedná se o režim, který umožní všem aplikacím přistoupit k souboru v režimu čtení.
MODE_WORD_WRITEABLE- jedná se o režim, který umožní všem aplikacím přistoupit k souboru v režimu zápis.
tolik úryvek s knihy ,vydedukoval jsem s kódu že MODE_PRIVATE = 0 ale jestli MODE_APEND = 1, MODE_WORD_READABLE=2, MODE_WORD_WRITEABLE = 3 to už nevím to tam nepíší.díky
Proč se tam snažíš napsat přímo čísla a ne ty konstanty?
Protože tam je číslo 0 v tom příkladu teď to skouším dávat ty konstanty a taky to funguje.Nic méně mohou tyto módy kecat do viditelnosti toho souboru? díky
edit: existuje nějaký emulátor kterého je součástí i správce souborů nejlépe total commander ? díky
Přesně tak, a ještě bych doplnil, pozor při zápisech mimo pracovní adresář.
V Androidech 6 a vyšších si pro to musíš buďto práva vyžádat v aplikaci a nebo externě povolit.
Ta verze androida je menší než 6. Jinak na celém netu jsem nenašel fungující příklad
![]:)](https://static.poradna.net/images/smiley/evilsmile.gif)
to je hrůza já už s toho pomalu nespím
No takhle. Protože ty data zjevně zapisuješ mimo externí paměť.
Android bohužel není tak jednoduchý, jako Windows.
Cituji:
Internal storage:
- It's always available.
- Files saved here are accessible by only your app.
- When the user uninstalls your app, the system removes all your app's files from internal storage.
Zapsat do externí paměti, kde soubor najdeš jde nějak takto:
private void writeNameToFile(String data,Context context) {
try {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput( Environment.getExternalStorageDirectory() + "/configJmeno.txt", Context.MODE_PRIVATE));
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e) {
MessageBox("Exception File write failed: " + e.toString());
}
}
Terminál , který mám emuluje kartu v adresáři:
/storage/emulated/0
Ono jak vidíš, už jen zapisovat soubory na androidu vyžaduje DOST SI NASTUDOVAT.
Já používám Eclipse terminál tam asi není nebo to jsem úplně nepochopil,další věc do funkce writeNameToFile(String data,Context context)
do parametru String data se do souboru "/configJmeno.txt" zapisují data ale nechápu co je parametr Context context?. Souhlasím s tebou že programování pro android je ze všeho nejtěžší co jsem dělal nebo pokoušel předem díky za pomoc
Ten Eclipse je letitý.
Bohužel i Androidovské aplikace potřebují si nejprve něco nastudovat.
Dělat to metodou pokus-omyl je hodně tvrdá cesta.
Context obsahuje odkaz na tvou aktivitu.
Funkci bys měl zavolat s parametrem: getApplicationContext()
nebo
getContext()
nebo
getBaseContext()
nebo
this
Tady jsem našel video návod https://www.youtube.com/watch?v=V8b-l13L8XY postupoval jsem krok za krokem akorát jsem změnil jméno souboru na pozice.txt nainstaloval jsem do mobilu Aligator S4060 duo a nic žádný soubor jsem pomocí aplikace Total Comanderu nenašel kde může být zakopaný pes ???
díky
poznámka v Eclipse s toho udělám neco.apk překopíruji to na mobil na SD karta a odtud to instaluji.
A jsi si jistý, žes tu aplikaci instaloval na SD kartu?
Spuštění instalátoru z SD karty není totéž.
Video se mi nechce shlížet.
Ten soubor se vytvoří až po klepnutí na buttonek v té miniaplikaci.
To já vím že se vytvoří soubor až po kliknutí na ten butonek .Další věc já si myslím že ty aplikace takto přenesené do telefonu instalují do telefonu tak jak mají aaa už mě to funguje já jsem s nějakého důvodu nepřidal do Androidmanifestu nedal
ačkoliv jsem si byl jist že jsem tam přidal
ale mě to vytvoří soubor ve vnitřní paměti /storage/emulated/0 viz příloha za kvalitu se omlouvám díky
Teď řeším jak tu funkci
upravit aby se ten soubor nepřepisoval to znamená obsah souboru zůstával ale nové data se do souboru přidávají na konec souboru díky
Ty tomu programování moc nedáváš, co.
Zkus nahradit:
FileOutputStream fos = new FileOutputStream(f);
na
FileOutputStream fos = new FileOutputStream(f , MODE_APPEND);
To jsem taky zkoušel ale výsledek je tento viz příloha díky
Tam má být toto
na netu jsem našel toto
koho by napadlo že místo "MODE_APPEND"má tam být "true"!!! díky
Constructs a new FileOutputStream that writes to file. If append is true and the file already exists, it will be appended to; otherwise it will be truncated. The file will be created if it does not exist.
Podle mě je v tom takový "hokej" nebo já ho mám to spíš
Už mi to jde i vytvořit složku a do ní zapsat soubor ale bohužel jen do /storage/emulated/0/msoubory msoubory je moje vytvořená složka tou samou aplikací která vytváří samotný soubor "pozice.txt" ale když to připojím na PC přes usb kabel tak to nenajdu ani složku a v ní ten soubor
a proč se nevytváří na SD kartě když je tam uvedeno Environment.getExternalStorageDirectory? díky
https://stackoverflow.com/questions/17594212/does-environment-getexternalstoragedirectory-returns-a-usable-data-folder-when
Skús sa pozrieť sem: https://developer.android.com/training/data-storage/files.html#java
Dôležité je zamerať sa na API level 19, alebo API level 18.... podľa toho prípadne upraviť manifest atď...tých prečo/lebo bude samozrejme viac.
O tom, či je SD karta naformátovaná na správny FS a či je namountovaná, samozrejme mlčíš...
Já jsem tem nafifest upravil takto
android:maxSdkVersion="18"toto jsem tam přidal a nic ten překladač nenamítal ale teď to nemám kdy otestovat na mobilu díky
Další pozoruhodnost narazil jsem na netu když jsem zadal do googlu "getInternalStorageDirectory()"
Tak se mi zdá každý pes jiná Ves