如何在android app中更新txt文件?

时间:2011-02-15 13:30:10

标签: android input view text-files

我是Java Android开发的初学者。我正在使用Eclipse SDK 3.6.1版本。我正在尝试创建一个txt文件并写一个日期/时间和字符串。但我无法更新txt文件,我只看到一行。有我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.logfile);
    working();
    viewing ();
}

public void working() {
    // try to write the content
    try {
        // open myfilename.txt for writing
        FileOutputStream out =
            openFileOutput("file.txt",Context.MODE_APPEND);
        // write the contents on mySettings to the file
        String time = DateFormat.getDateTimeInstance().format(new Date());
        String abs = "action";
        String mySettings = time+" -- "+abs+"\n";
        out.write(mySettings.getBytes());
        // close the file
        out.close();
    } catch (java.io.IOException e) {
        //do something if an IOException occurs.
        e.printStackTrace();
    }
}

public void viewing (){
    TextView rodyk = (TextView)findViewById(R.id.textas);

    try {
        // open the file for reading
        InputStream instream = openFileInput("file.txt");

        // if file the available for reading
        if (instream != null) {
            // prepare the file for reading
            InputStreamReader inputreader = new InputStreamReader(instream);
            BufferedReader buffreader = new BufferedReader(inputreader);

            String line;

            // read every line of the file into the line-variable, on
            // line at the time
            while (( line = buffreader.readLine()) != null) {
                // do something with the settings from the file     
                rodyk.setText(line);
            }
        }

        // close the file again
        instream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();   
    }
}

我使用Context.MODE_APPEND,但仍然无法更新txt文件。我只看到一排。

3 个答案:

答案 0 :(得分:3)

 rodyk.setText(line);

此代码不会将您读取的行追加到该TextView中已有的文本中。它会将文本更改为您阅读的最新行。因此,您应该只在TextView中看到file.txt的最后一行的内容。

每当您重新安装应用程序时(因为您在创建和测试期间可能会做很多事情),您的file.txt可能会被新文件替换。

答案 1 :(得分:1)

FileOutputStream out =
    openFileOutput("file.txt",Context.MODE_APPEND);

你可以在没有上下文的情况下写作:

FileOutputStream out =
    openFileOutput("file.txt",MODE_APPEND);

有效。

答案 2 :(得分:0)

不要使用文字视图;在代码中使用编辑文本。

EditText et=(EditText)findviewbyId(R.id.et);
...
...
...
et.setText(line);