将文本文件保存到 sd 卡

Posted

技术标签:

【中文标题】将文本文件保存到 sd 卡【英文标题】:save textfile into sd card 【发布时间】:2014-01-16 17:26:23 【问题描述】:

我想将文件保存到 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();
            
        
    );

问题出在哪里?

【问题讨论】:

【参考方案1】:

打印你捕捉到的异常,看看到底出了什么问题:

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

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

myFile.getParentFile().mkdirs();

此外,您不应该对 sdcard 路径进行硬编码。使用这个:

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

【讨论】:

谢谢先生,我试试,我会报告结果 那么,stacktrace 是什么? 对不起先生,成功了,谢谢我犯了一些错误。我有一个新问题,当商店不替换以前的文件时怎么办?因为如果有一个同名的文件他会立即替换我应该添加什么编码? 你想做什么而不是替换文件? 相反,我想创建一个新文件,如果已经有一个名为 PreposisiRemoval.txt 的文件,新文件将以名称 PreposisiRemoval[当前时间].txt 保存怎么做? 【参考方案2】:

正如我所见,您只需将一些文本写入设备存储中的特定文件...我想提供一个库,它可以非常轻松地处理所有其他事情。

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

去here 下载库。 真的很有帮助。

【讨论】:

以上是关于将文本文件保存到 sd 卡的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件从网站保存到 SD 卡

保存密码到sd卡

如何将文件保存到SD卡[重复]

将位图从 arraylist 保存到 SD 卡 - 保存的文件不可读

将图像、音频和视频保存到 SD 卡

自动将视频文件保存到 Android SD 卡