Autore Topic: Problema nella scrittura di un file nella scheda SD  (Letto 729 volte)

Zate

  • Visitatore
Problema nella scrittura di un file nella scheda SD
« il: 09 Ottobre 2011, 19:18:54 CEST »
0
Sto cercando di fare un app che legga il codice html di una pagina web, lo salvi e successivamente lo carichi.
Il salvataggio e il caricamento avverrebbe attraverso un menu.
Quindi:
Codice (Java): [Seleziona]
@Override
        public boolean onCreateOptionsMenu(android.view.Menu menu) {
                // TODO Auto-generated method stub
                super.onCreateOptionsMenu(menu);
                MenuInflater blowUp = getMenuInflater();
                blowUp.inflate(R.menu.menu, menu);
                return true;
        }

Poi per gestire i vari elementi:

Codice (Java): [Seleziona]
@Override
        public boolean onOptionsItemSelected(MenuItem item) {
                // TODO Auto-generated method stub
                switch (item.getItemId()) {

Se clicco save:

Codice (Java): [Seleziona]
case R.id.save:
                        File SavedHTML = new File(Environment.getExternalStorageDirectory()
                                        + "/Saved HTML");

                        if (!SavedHTML.exists()) {
                                SavedHTML.mkdir();
                        }
                        try {
                                savecode = httpStuff.getText().toString();
                                if (savecode != null) {
                                        AlertDialog inputdialog = new AlertDialog.Builder(this)
                                                        .create();
                                        final EditText input = new EditText(this);
                                        inputdialog.setView(input);
                                        inputdialog.setButton("Ok",
                                                        new DialogInterface.OnClickListener() {
                                                                @Override
                                                                public void onClick(DialogInterface dialog,
                                                                                int which) {
                                                                        // TODO Auto-generated method stub
                                                                        try {
                                                                                title = input.getText().toString();
                                                                                FileWriter f = new FileWriter(
                                                                                                "/sdcard/Saved HTML/" + title
                                                                                                                + ".html");
                                                                                f.write(savecode);
                                                                        } catch (IOException e) {
                                                                                // TODO Auto-generated catch block
                                                                                e.printStackTrace();
                                                                        }
                                                                }
                                                        });
                                        inputdialog.show();
                                }
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        break;

Se clicco load:

Codice (Java): [Seleziona]
case R.id.load:
                        AlertDialog inputdialog = new AlertDialog.Builder(this).create();
                        final EditText input = new EditText(this);
                        inputdialog.setView(input);
                        inputdialog.setButton("Ok", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                        // TODO Auto-generated method stub
                                        title = input.getText().toString();
                                        File dir = Environment.getExternalStorageDirectory();
                                        File file = new File(dir + "/Saved HTML/" + title + ".html");
                                        try {
                                                StringBuilder text = new StringBuilder();
                                                BufferedReader br = new BufferedReader(new FileReader(file));
                                                try {
                                                        while ((savedcode = br.readLine()) != null) {
                                                        text.append(savedcode);
                                                        text.append('\n');
                                                    }
                                                        httpStuff.setText(text);
                                                } catch (IOException e) {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
                                        } catch (FileNotFoundException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                                AlertDialog alert = new AlertDialog.Builder(
                                                                HttpExample.this).create();
                                                alert.setTitle("The file doesn't exist");
                                                alert.setMessage("Are you sure you've typed it correctly?");
                                                alert.setButton("OK",
                                                                new DialogInterface.OnClickListener() {
                                                                        @Override
                                                                        public void onClick(DialogInterface dialog,
                                                                                        int which) {
                                                                                // TODO Auto-generated method stub
                                                                        }
                                                                });
                                                alert.show();
                                        }
                                }
                        });
                        inputdialog.show();
                        break;
                }

E per concludere:

Codice (Java): [Seleziona]
return false;
        }




Il problema è questo: alcune volte non salva proprio il codice, altre volte solo una parte. Penso che il problema sia nella scrittura del file, ma non so dove. Non vedo niente nel LogCat, avete alcune idee? :S

Zate

  • Visitatore
Re:Problema nella scrittura di un file nella scheda SD
« Risposta #1 il: 09 Ottobre 2011, 19:31:03 CEST »
0
Sto tutto il giorno a cercare una soluzione e quando posto qui la trovo .-.
basta aggiungere f.flush()

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
R: Re:Problema nella scrittura di un file nella scheda SD
« Risposta #2 il: 09 Ottobre 2011, 19:41:16 CEST »
+1
Sto tutto il giorno a cercare una soluzione e quando posto qui la trovo .-.
basta aggiungere f.flush()

Aldilà del flush manca anche la chiamata a .close() ;)

Inviato dal mio HTC Desire usando Tapatalk

Zate

  • Visitatore
Re:Problema nella scrittura di un file nella scheda SD
« Risposta #3 il: 09 Ottobre 2011, 20:15:44 CEST »
0
Grazie per l'accorgimento!  :-)