将文本文件保存到 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 卡上没有 documents
folder。在 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 卡的主要内容,如果未能解决你的问题,请参考以下文章