2011-09-15 5 views
0

J'essaie d'utiliser java FileInputStream pour écrire certaines chaînes dans un fichier texte qui sera stocké sur le stockage interne android. Cependant, mon périphérique virtuel continue à émettre une exception et je ne suis pas sûr de quoi ou où je devrais regarder car la fonction de chat DDMS ne me donne aucune information utile. J'utilise une structure try/catch avec une trace de pile comme indiqué ci-dessous. Je ne suis pas très familier avec la fonction de débogage par rapport à Android et je ne suis pas sûr où d'autre je peux chercher pour savoir ce qui se passe. Le code est ci-dessous.Comment utiliser le débogage eclipse dans android

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    private EditText textBox; 
    private static final int READ_BLOCK_SIZE = 100; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     textBox = (EditText)findViewById(R.id.textView1);   

     Button saveBtn = (Button)findViewById(R.id.button1); 
     Button loadBtn = (Button)findViewById(R.id.button2); 

     saveBtn.setOnClickListener(new View.OnClickListener() {   
      public void onClick(View v) { 
       String str = textBox.getText().toString(); 
       try{ 
        FileOutputStream fOut = 
         openFileOutput("textfile.txt", MODE_WORLD_READABLE); 
        OutputStreamWriter osw = new OutputStreamWriter(fOut); 

        //---write the string to the file--- 
        osw.write(str); 
        osw.flush(); 
        osw.close(); 

        //---display file saved message--- 
        Toast.makeText(getBaseContext(), "File saved successfully!!", Toast.LENGTH_SHORT).show(); 

        //---clears the EditText--- 
        textBox.setText(""); 

       }catch(IOException ioe){ 
        ioe.printStackTrace(); 
       } 
      } 
     }); 

     loadBtn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       try{ 
        FileInputStream fIn = openFileInput("textfile.txt"); 
        InputStreamReader isr = new InputStreamReader(fIn); 

        char[]inputBuffer = new char[READ_BLOCK_SIZE]; 
        String s = ""; 

        int charRead; 
        while((charRead = isr.read(inputBuffer))>0){ 

         //---convert the char to a String--- 
         String readString = String.copyValueOf(inputBuffer, 0, charRead); 
         s += readString; 

         inputBuffer = new char[READ_BLOCK_SIZE]; 
        } 
        //---set the EditText to the text that has been read--- 
        textBox.setText(s); 

        Toast.makeText(getBaseContext(), "File loaded successfully!!", Toast.LENGTH_SHORT).show(); 
       }catch(IOException ioe){ 
        ioe.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

Répondre

0

avez-vous défini vos autorisations dans votre manifeste pour l'écriture? et est votre appareil un droidx (qui lorsque vous branchez le câble USB, démonte le stockage externe, le rendant inaccessible). Pourquoi ne pas lancer le débogueur et mettre des points de débogage et voir jusqu'où il se bloque avant qu'il ne se bloque?

+0

J'écris dans le stockage interne, donc je ne devrais pas avoir à me soucier du démontage externe. Ce sera mon prochain projet. Je ne suis pas en train d'ajouter la permission d'écrire car je pensais qu'il n'y avait qu'une permission pour écrire à l'externe, pas interne. – JCC