Как обновить TXT-файл в приложении для Android? - PullRequest
1 голос
/ 15 февраля 2011

Я новичок в разработке Java Android. Я использую версию Eclipse SDK 3.6.1. Я пытаюсь создать текстовый файл и написать дату / время и строку. Но я не могу обновить текстовый файл, я вижу только одну строку. Вот мой код:

@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, но все еще не могу обновить текстовый файл. Я вижу только один ряд.

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011
 rodyk.setText(line);

Этот код не добавляет строку, которую вы прочитали, к тексту, уже находящемуся в этом TextView.Это изменит текст на самую последнюю строку, которую вы прочитали.Следовательно, вы должны видеть только содержимое последней строки file.txt в вашем TextView.

Кроме того, всякий раз, когда вы переустанавливаете приложение (как вы можете сделать много во время его создания и тестирования), ваш файл file.txt может бытьзаменяется новым файлом.

1 голос
/ 18 декабря 2011
FileOutputStream out =
    openFileOutput("file.txt",Context.MODE_APPEND);

Вы можете писать без контекста, например:

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

Это работает.

0 голосов
/ 24 ноября 2011

Не использовать вид текста;используйте Edit Text в вашем коде.

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