FileWriter失败并且没有被Catch语句捕获

时间:2011-11-17 03:11:21

标签: android

这是我的整个代码(ps Im a noobie);

    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”可以使用Stream Witer / Reader ...
  4. 但FileWriter代码获取错误消息Filenotfoundexception“只读文件系统”
  5. 那么为什么一种技术适用于同一个文件而另一种技术不适用
  6. 你能告诉我失踪了吗 - 谢谢Trevor

1 个答案:

答案 0 :(得分:0)

我猜你的问题是你只是没有得到IOException。您可以尝试更改

catch(IOException e)

catch(Exception e)

然后会捕获所有扩展Exception对象的异常(虽然它不会捕获Error)。但是,我没有测试代码的工具,因此您必须自己尝试并发布结果。

祝你好运。