Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Android připsání textu do existujícího souboru

Ahoj.

Snažím se takto připisovat text do souboru:

private void writeNameToDocument(String data,Context context) {
try {

File file = new File(cestaKDokumentum, souborJmeno.getText().toString()+".csv");
FileWriter buf = new FileWriter(file.getAbsoluteFile(),true);
buf.write(data + System.getProperty("line.separator") ); // Chci připisovat na konec souboru
buf.close();

}
catch (IOException e) {
MessageBox("Exception File write failed: " + e.toString());
}
}

Kód probíhá v pořádku, ale má jednu obrovskou vadu.
Když jej spustím znovu, tak přemaže původní obsah souboru a připíše tam jen to poslední.

Řešení:

Děkuji všem rádcům za nápovědu.

Chyba byla klasicky v občerstvování souboru připojeného mobilu.
Takže to chodí super, ale změna se neprojevuje v připojeném mobilu hned.

PROKLÍNÁM ANDROID.

Předmět Autor Datum
Proc nepouzijes FileOutputStream v APPEND modu?
MaSo 02.11.2020 17:53
MaSo
To jsem tuším zkoušel taky, ale nefungovalo to, moment hodím sem i tento kód.
Flash_Gordon 02.11.2020 17:55
Flash_Gordon
Jo už vím. FileOutputStream přebírá jen tupě jméno souboru. Pokud to udělám na SD kartě, a tam je c…
Flash_Gordon 02.11.2020 18:03
Flash_Gordon
class Scratch { public static void main(String[] args) throws IOException { var fos = new FileOutput…
MaSo 02.11.2020 18:11
MaSo
Takhle. Já používám teda toto: File file = new File(cestaKDokumentum, souborJmeno.getText().toStri…
Flash_Gordon 02.11.2020 18:14
Flash_Gordon
Tak bud nemas pravo zapisu, nebo nic nezapisujes. Mi to funguje...
MaSo 02.11.2020 18:43
MaSo
Ano, už se na to dívám a problém bude někde v androidu. Abych byl konkrétní skenuju kód. A naskenov…
Flash_Gordon 02.11.2020 18:51
Flash_Gordon
MediaScannerConnection.scanFile(MainActivity.this, new String[] {cestaKDokumentum + File.separator +…
MaSo 02.11.2020 19:05
MaSo
No to se právě stará o to, aby ten soubor byl vůbec vidět z PC. Ale na občerstvování to zjevně nesta… poslední
Flash_Gordon 02.11.2020 20:05
Flash_Gordon
Pro Android neprogramuju, ale Google nějakou inspiraci určitě najde, např. https://www.okhelp.cz/and…
host 02.11.2020 18:11
host
Děkuji všem rádcům za nápovědu. Chyba byla klasicky v občerstvování souboru připojeného mobilu. Tak…
Flash_Gordon 02.11.2020 19:05
Flash_Gordon

Takhle.

Já používám teda toto:

File file = new File(cestaKDokumentum, souborJmeno.getText().toString()+".csv");

FileOutputStream buf = new FileOutputStream(file, true);

buf.write(data.getBytes());
buf.write(System.getProperty("line.separator").getBytes());
buf.close();

A když to 2x spustím, tak v souboru zůstane jen poslední záznam.
Teda houby. Ono to nepřipisuje. Tak to je.

Ano, už se na to dívám a problém bude někde v androidu.

Abych byl konkrétní skenuju kód.
A naskenovaný kód chci připisovat do souboru:

Intent intent = new Intent(ACTION_SCAN);
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
startActivityForResult(intent, 0);

A následně:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
//get the extras that are returned from the intent
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");

writeNameToDocument(contents, this);

Toast toast = Toast.makeText(this, "Naskenováno:" + contents + ", " + souborJmeno.getText() + ".csv", Toast.LENGTH_LONG);
toast.show();

}
}
}

Funkce pro zápis writeNameToDocument vypadá takto:
private void writeNameToDocument(String data,Context context) {
try {

File file = new File(cestaKDokumentum, souborJmeno.getText().toString()+".csv");

FileOutputStream buf = new FileOutputStream(file, true);

buf.write(data.getBytes());
buf.write("HALO".getBytes());
buf.close();

MediaScannerConnection.scanFile(MainActivity.this, new String[] {cestaKDokumentum + File.separator + souborJmeno.getText() + ".csv" }, null, null);
}
catch (IOException e) {
MessageBox("Exception File write failed: " + e.toString());
}
}

Absolutně to nechápu. Chybu to nepíše žádnou, nepadá.

Jakoby se to podruhé ani neprovedlo. Přičemž v toastu to píše naskenovaný kód v pořádku !

Zpět do poradny Odpovědět na původní otázku Nahoru