我的活动有一些editText行。当我用不同的按钮打开活动时,会在此editText中读取不同的数据。然后,用户可以在editText中更改或添加文本,当单击Save(Shrani)按钮时,我希望将这些更改保存到现有文件(从中读取数据的文件)。
我从另一个活动中获取从中读取数据(然后应保存到其中)的文件的名称。读取数据,这部分工作正常。我只是无法保存更改。
public void save(String imeDatoteke1) {
String nova = "\n";
try {
OutputStreamWriter out =
new OutputStreamWriter(openFileOutput(imeDatoteke1, Context.MODE_PRIVATE));
out.flush();
out.write(predmet1.getText().toString());
out.write(nova);
out.write(predmet2.getText().toString());
out.write(nova);
out.write(predmet3.getText().toString());
out.write(nova);
out.write(predmet4.getText().toString());
out.write(nova);
out.write(predmet5.getText().toString());
out.write(nova);
out.write(predmet6.getText().toString());
out.write(nova);
out.write(predmet7.getText().toString());
out.write(nova);
out.write(predmet8.getText().toString());
out.write(nova);
out.write(predmet9.getText().toString());
out.write(nova);
out.write(predmet10.getText().toString());
out.write(nova);
out.write(predmet11.getText().toString());
out.write(nova);
out.write(ocena1.getText().toString());
out.write(nova);
out.write(ocena2.getText().toString());
out.write(nova);
out.write(ocena3.getText().toString());
out.write(nova);
out.write(ocena4.getText().toString());
out.write(nova);
out.write(ocena5.getText().toString());
out.write(nova);
out.write(ocena6.getText().toString());
out.write(nova);
out.write(ocena7.getText().toString());
out.write(nova);
out.write(ocena8.getText().toString());
out.write(nova);
out.write(ocena9.getText().toString());
out.write(nova);
out.write(ocena10.getText().toString());
out.write(nova);
out.write(ocena11.getText().toString());
out.write(nova);
out.close();
Toast.makeText(this, "Vsebina je shranjena v datoteko.", Toast.LENGTH_LONG).show();
} catch (Throwable t) {
Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:0)
我假设您在catch
中没有获得任何例外,否则您将其粘贴到您的问题中。
因此,请确保imeDatoteke1(您的文件名)中没有任何空格。值得一提的是,openFileOutput()用context.MODE_PRIVATE打开的文件将在私有应用程序空间创建(/ data / data / your_app_name / files / filename - 我不确定adb是否可以读取该目录shell - 在设备设置中启用调试后当然可以访问它。)
public void save(String filename) {
EditText[] somelist = {predmet1,predmet2,predmet3};
File root = Environment.getExternalStorageDirectory();
try {
FileWriter fw = new FileWriter(new File(root + "/" + filename));
BufferedWriter out = new BufferedWriter(fw);
for (EditText ed : somelist){
out.write(ed.getText().toString());
out.write("\n");
}
out.close();
} catch (IOException e) {
Log.d("Katja app", Util.stackTraceWriter(e));
}
}
如果您具有所需权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(see list),可能会成功。也许this part Android培训可能会让您感兴趣。