Autore Topic: Errore \"unhandled exception\" con FileInputStream  (Letto 446 volte)

Offline washburn

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2 - Stock ROM (JB 4.1.2)
  • Sistema operativo:
    Windows 7
Errore \"unhandled exception\" con FileInputStream
« il: 06 Settembre 2014, 20:01:55 CEST »
0
Salve,

sono nuovo del forum e nuovo della programmazione con Android, non sono nuovo della programmazione in generale poichè sviluppo per lavoro utilizzando altri linguaggi.
Come prima app "sperimentale" per prendere un pò la mano con android, ho sviluppato un semplice programmino che salva il contenuto digitato di una EditText "multiline" in un file di testo e lo legge all'avvio dell'app.
Inizialmente la parte di codice che legge il file di testo (per sperimentare) era posizionata all'interno dell'evento "OnClick" del tasto utilizzato per salvare il file.
Quando ho poi spostato la parte di caricamento del file di testo al di fuori dell'evento "OnClick" lasciando solo la parte di salvataggio, mi sono accorto che l'IDE segnala con la sottolineatura rossa la parte di codice relativa al "new FileInputStream(file)".
Cosa che non succedeva nell'evento OnClick.
Come mai?

Il codice è il seguente:

Codice (Java): [Seleziona]
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Context;
import android.widget.Button;
import android.widget.TextView;
import android.widget.EditText;
import android.view.View.OnClickListener;
import android.view.View;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //legge il contenuto del file MEMO
        File file = new File(Environment.getExternalStorageDirectory(), "memo.txt");
       
        //*******************   questa qui sotto è la riga della segnalazione ******************************

        BufferedReader inputReader2 = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

        //**************************************************************************************

        String inputString2;
        StringBuffer stringBuffer2 = new StringBuffer();

        while ((inputString2 = inputReader2.readLine()) != null)
        {
            stringBuffer2.append(inputString2 + "\n");
        }

        EditText edText = (EditText) findViewById(R.id.edTXT);
        edText.setText(stringBuffer2.toString());

        //definizione per l'evento Click sul bottone SALVA

        Button btnSalva=(Button)findViewById(R.id.btSave);
        btnSalva.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0) {

                try
                {
                    String storageState = Environment.getExternalStorageState();

                    //se la SD (sdcard0) è disponibile

                    if (storageState.equals(Environment.MEDIA_MOUNTED))
                    {
                        EditText edText= (EditText) findViewById(R.id.edTXT);

                        //crea il file di testo e lo riscrive

                        File file = new File(Environment.getExternalStorageDirectory(), "memo.txt");
                        FileOutputStream fos2 = new FileOutputStream(file);
                            fos2.write(edText.getText().toString().getBytes());
                        fos2.close();
                    }
                    Toast tToast= Toast.makeText(Main.this, "Salvataggio Completato",Toast.LENGTH_SHORT);
                    tToast.show();

                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Grazie, saluti.

Roberto

Post unito: 06 Settembre 2014, 23:40:00 CEST
Ho trovato da solo la soluzione:

dovevo racchiudere la parte di codice del caricamento dei dati dal file in un blocco "try-catch".

Saluti,

Roberto
« Ultima modifica: 06 Settembre 2014, 23:40:00 CEST da washburn, Reason: Merged DoublePost »