我是开发Android应用程序的新手。我的第一个项目已经过度挑战了。我的应用程序应该能够通过单击“保存”-Button将EditText
字段列表保存到文本文件中。
但我没有成功将文件写入SD卡。
我的代码:
(按钮调用的MainActivity.java
中的函数)
public void saveData(View view){
try{
File sdcard = Environment.getExternalStorageDirectory();
// to this path add a new directory path
File dir = new File(sdcard.getAbsolutePath() + "/myapp/");
// create this directory if not already created
dir.mkdir();
// create the file in which we will write the contents
File file = new File(dir, "datei.txt");
FileOutputStream os = new FileOutputStream(file);
String data = "some string";
os.write(data.getBytes());
os.flush();
os.close();
}
catch (IOException e){
Log.e("com.sarbot.FitLogAlpha", "Cant find Data.");
}
}
通过Google,我找到了另一种方式:
public void saveData3(View view){
FileWriter fWriter;
File sdCardFile = new File(Environment.getExternalStorageDirectory() + "/datafile.txt");
Log.d("TAG", sdCardFile.getPath()); //<-- check the log to make sure the path is correct.
try{
fWriter = new FileWriter(sdCardFile, true);
fWriter.write("CONTENT CONTENT UND SO");
fWriter.flush();
fWriter.close();
}catch(Exception e){
e.printStackTrace();
}
}
在我的manifest.xml
我设置权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
开发者指南中的函数返回True - &gt; SD卡是可写的。
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
在res/layout/activity_main.xml
中有一些TextViews
和EditText
以及一个带有android:onClick="saveData"
参数的保存按钮。该函数被调用。 SD卡是可写的。没有IO错误。但按下按钮后(没有错误)我的SD卡上仍然没有新文件。我已经尝试手动创建文件,只是追加但没有改变。我也尝试了BufferedWriter
的其他功能..但没有成功。
我正在使用USB-Debug模式运行Sony Xperia E.将SD卡卸载并安装在我的电脑上,但无法找到该文件。也许它只对手机可见?它不存在?我不知道该怎么办,因为我没有错误。我需要在我的计算机上使用此文件的内容进行计算。
:编辑: 问题不在代码中......只是在我抬头的地方。 externalStorage - &gt; sdCard似乎是内部的,可移动的SD卡是 - &gt; ext_card。
答案 0 :(得分:0)
os.flush()
。在os.close()
答案 1 :(得分:0)
在这一行之后,
File file = new File(dir, "datei.txt");
添加此代码
if ( !file.exists() )
{
file.createNewFile(); // This line will create new blank line.
}