如何将更改(在editText中创建)保存到Android Studio中的现有文件中?

时间:2015-03-19 18:25:51

标签: java android android-studio

我的活动有一些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();
    }
}

1 个答案:

答案 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培训可能会让您感兴趣。