2011-11-17 69 views
1

这里是我的整个代码(ps Im a noobie);FileWriter失败并且未被Catch语句捕获

package xom.aaa.aaa; 
import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.Reader; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 
public class FilewritertestActivity extends Activity { 
    TextView textout1, textout2, textout3; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button b1 = (Button) findViewById(R.id.button1); 
     textout1 = (TextView) findViewById(R.id.textView1); 
     textout2 = (TextView) findViewById(R.id.textView2); 
     textout3 = (TextView) findViewById(R.id.textView3); 
     b1.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       //--------- OutputStreamWriter ------------ 
       try {  
         FileOutputStreamfOut=openFileOutput("settings1.dat", MODE_WORLD_READABLE); 
        OutputStreamWriter osw = new OutputStreamWriter(fOut); 
        osw.write("using fileoutput stream to write this to a file"); 
        osw.flush(); 
        osw.close(); 
       }catch(Exception e){ 
        e.printStackTrace(System.err); 
       } 
       String datax = ""; 
       StringBuffer buffer = new StringBuffer(); 

       //--------- InputStreamReader ------------------- 
       try { 
        FileInputStream fIn = openFileInput("settings1.dat"); 
        Reader reader = new InputStreamReader(fIn); 
        int data = reader.read(); // reads the next char 
        while(data != -1){ 
         buffer.append((char)data); 
         data = reader.read(); 
        } 
        reader.close();  
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       textout1.setText(buffer.toString()); 

       //--------------- FileWriter --------------- 
       try { 
        FileWriter fw = new FileWriter("settings1.dat"); 
        BufferedWriter out = new BufferedWriter(fw); 
        //BufferedWriter out = new BufferedWriter(new FileWriter("settings1.dat")); 
        out.write("a String"); 
        out.close(); 
       } catch (Exception e){ 
        e.printStackTrace(); 
        textout2.setText(e.toString()); 
       } 

      } 
     }); 
    } 
} 
  1. 问题是FileWriter的不工作(文件 “settings1.dat”)
  2. 但OutputStreamWriter和InputStreamReader的不工作(文件 “settings1.dat”)
  3. 的代码显示写入则读到文件“settings1.dat”都确定了维特流/读卡器...
  4. 但FileWriter的代码得到错误信息FileNotFoundException异常“只读文件系统”
  5. 那么,为什么在同一个文件,另一种技术工作d oesn't
  6. 你能告诉什么荫失踪 - 感谢特雷弗
+0

你在logcat中获得什么输出?您的清单中是否设置了WRITE_EXTERNAL_STORAGE权限? – dymmeh

+0

我做WRITE_EXTERNAL_STORAGE权限,但直到有问题..注意:它使用FileOutputStreamfOut,只是不工作使用FileWriter,谢谢... ive调整后显示代码,证明 – user1050879

回答

0

我猜你的问题是,你只是没有得到一个IOException。你可以尝试改变

catch(IOException e) 

catch(Exception e) 

那么这将赶上其延长Exception对象(它不会赶上Error小号虽然)所有异常。但是,我没有用于测试代码的工具,因此您必须亲自尝试并发布结果。

祝你好运。

+0

谢谢你的建议 - 我改变了IOException到 – user1050879

+0

感谢您的帮助,我能够进步。和Iam能够诊断我的主要问题,即。 FileWriter不写...(我编辑了我的原始帖子的代码和问题,以反映这.....再次感谢! – user1050879

相关问题