繁体   English   中英

无法读取/写入android中的文件

[英]Unable to read/write to file in android

我正在尝试让我的应用程序将文本写入EditText的文本文件,并从中读取到TextView。 它从未更新过TextView,现在应用程序崩溃了。 任何建议将非常感谢!

public class MainActivity extends Activity implements OnClickListener {

String file = Environment.getExternalStorageDirectory() + "/CSCI598.txt";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button rea = (Button) findViewById(R.id.reads1);   
    rea.setOnClickListener(this);

    Button ap = (Button) findViewById(R.id.appends1);   
    ap.setOnClickListener(this);

}

private void toast(String text)
{
    Context context = getApplicationContext();
    Toast toast = Toast.makeText(context, text, Toast.LENGTH_LONG);
    toast.show();
}

@SuppressWarnings("resource")
@Override
public void onClick(View v) {

    TextView tv=(TextView)findViewById(R.id.textView1);
    EditText et=(EditText)findViewById(R.id.editText1); 

    switch(v.getId()) {
    case R.id.reads1:

           try
            {
               FileInputStream fis = new FileInputStream(file);
               BufferedReader bfr = new BufferedReader(new InputStreamReader(fis));
               String in;
               StringBuffer stringBuffer = new StringBuffer();                
               while ((in = bfr.readLine()) != null) {
                   stringBuffer.append(in + "\n");
               }
               tv.setText(stringBuffer.toString());
                toast("File successfully loaded.");

            }
            catch (Exception ex)
            {
                toast("Error loading file: " + ex.getLocalizedMessage());

            }

        break;

    case R.id.appends1:

        String txt=et.getText().toString(); 

         try
            {
             FileWriter writer = new FileWriter(file);
            writer.write(txt); 
            writer.flush();
            writer.close();

                toast("File successfully saved.");
            }
            catch (Exception ex)
            {
                toast("Error saving file: " + ex.getLocalizedMessage());
            }

        break;

  }

}

}

使用Environment.getExternalStorageDirectory()获取sdcard目录。 尝试在代码中更改此行:

String file = "sdcard/CSCI598.txt";

附:

String file = Environment.getExternalStorageDirectory() + "/CSCI598.txt";

此外,正如@Yahya提到的那样,请确保您在Android清单文件中拥有此权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果这不起作用。 尝试阅读这样的文件:

FileReader fr = new FileReader(file);
BufferedReader inputReader = new BufferedReader(fr);

然后就像现在一样使用while循环。

像这样写文件

FileWriter out = new FileWriter(file, true);
 out.write(txt + "\n");
 out.close();

提供崩溃日志。

  1. 您是否在清单xml文件中提供了sdcard读写权限。

< uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE” >< / uses-permission >

  1. 而不是像String file =“sdcard / CSCI598.txt”那样使用硬编码路径; 使用下面

    String file = Environment.getExternalStorageDirectory()+“/ CSCI598.txt”;

  2. 当您使用模拟器时,您在创建AVD时有很多SD卡空间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM