我是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文件。我只看到一排。
答案 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);