将文本文件保存到SD卡中

时间:2014-01-16 17:26:24

标签: java android eclipse save

我想将文件保存到SD卡中的文本中,在完成一些教程后,我会得到一个关于编码的参考资料。 但是在我运行之后它不起作用,只是得到消息“保存的文件失败”。 有没有我的编码错了? 我想保存文件来自活动中的textview。

我还在manifest.xml上添加了一条消息

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

我使用此代码

public class PreposisiRemoval extends Activity implements OnClickListener{
Button button;
Button buttonsave;
TextView tv;

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

    Intent intent = getIntent();
    String result = intent.getStringExtra("resultFilter");

    tv = (TextView) findViewById(R.id.textView8);
    tv.setMovementMethod(new ScrollingMovementMethod());
    tv.setText(result);
    tv.setTextSize(14);

    buttonsave = (Button) findViewById(R.id.button8);
    buttonsave.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            boolean mExternalStorageAvailable = false;
            boolean mExternalStorageWriteable = false;
            String state = Environment.getExternalStorageState();

            if (Environment.MEDIA_MOUNTED.equals(state)) {

                mExternalStorageAvailable = mExternalStorageWriteable = true;
            } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

                mExternalStorageAvailable = true;
                mExternalStorageWriteable = false;
            } else {

                mExternalStorageAvailable = mExternalStorageWriteable = false;
            }

            try {
                File myFile = new File("/sdcard/documents/PreposisiRemoval.txt");
                myFile.createNewFile();
                FileOutputStream FOut = new FileOutputStream(myFile);
                OutputStreamWriter myOutWriter =
                        new OutputStreamWriter(FOut);
                        myOutWriter.append(tv.getText());
                        myOutWriter.close();
                        FOut.close();
                Toast.makeText(getBaseContext(), "Save Files Successful", Toast.LENGTH_SHORT).show();
            }
            catch (Exception e) {
                Toast.makeText(getBaseContext(), "Save Files Failed", Toast.LENGTH_SHORT).show();
            }
        }
    });

其中存在问题?

2 个答案:

答案 0 :(得分:0)

打印您捕获的异常,以查看到底出了什么问题:

catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getBaseContext(), "Save Files Failed", Toast.LENGTH_SHORT).show();
}

我猜你的SD卡上没有documents个文件夹。在myFile.createNewFile()之前添加以下行:

myFile.getParentFile().mkdirs();

此外,您不应该对SD卡路径进行硬编码。使用此:

File myFile = new File(Environment.getExternalStorageDirectory(),"documents/PreposisiRemoval.txt")

答案 1 :(得分:0)

我可以看到你只需要将一些文本写入设备存储中的特定文件...我想提供一个可以很容易地处理所有其他事情的库。

您只需将此库添加到项目中并使用:      WriteLogToFile.appendLog 方法并将文本传递给它。

转到here下载图书馆。 它真的很有帮助。