我只能从我的文本文件中读取一行代码
I can only read one line of code out of my text file
所以我想在 Android 上创建一个待办事项列表,我可以在其中添加项目,然后动态显示在列表中。因此,当我在文本字段中输入文本然后按下添加按钮时,列表会扩展为我刚刚创建的项目。这一切都很顺利,但如果我完全从内存堆栈中取出应用程序然后重新启动它,那就不行了。当我重新打开应用程序时,列表只包含一个项目,这是我在关闭应用程序之前添加到列表中的最后一个项目。这是我的代码:
package be.oefeningen.filestorage;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.view.View.OnClickListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.io.InputStreamReader;
public class FileStorageActivity extends ListActivity implements OnClickListener {
private ArrayList<String> values=new ArrayList<String>();
InputStream inputStream;
String line;
@Override
public void onClick(View v) {
EditText editText=(EditText) findViewById(R.id.editText);
String tekst=editText.getText().toString()+"\n";
FileOutputStream outputStream;
try {
outputStream=openFileOutput("todoitems",MODE_PRIVATE);
outputStream.write(tekst.getBytes());
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
inputStream = openFileInput("todoitems");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
line = reader.readLine();
if (line != null){
values.add(line);
} else {
inputStream.close();
}
}catch (Exception e)
{
e.printStackTrace();
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,values);
setListAdapter(adapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
inputStream = openFileInput("todoitems");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
line = reader.readLine();
while (line != null){
values.add(line);
line = reader.readLine();
}
inputStream.close();
}catch (Exception e)
{
e.printStackTrace();
}
setContentView(R.layout.activity_file_storage);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,values);
setListAdapter(adapter);
}
}
可能的原因是,每次写入文件时,都会丢失旧数据。
替换此行
outputStream=openFileOutput("todoitems",MODE_PRIVATE);
用这条线
outputStream=openFileOutput("todoitems", MODE_PRIVATE | MODE_APPEND);
所以我想在 Android 上创建一个待办事项列表,我可以在其中添加项目,然后动态显示在列表中。因此,当我在文本字段中输入文本然后按下添加按钮时,列表会扩展为我刚刚创建的项目。这一切都很顺利,但如果我完全从内存堆栈中取出应用程序然后重新启动它,那就不行了。当我重新打开应用程序时,列表只包含一个项目,这是我在关闭应用程序之前添加到列表中的最后一个项目。这是我的代码:
package be.oefeningen.filestorage;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.view.View.OnClickListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.io.InputStreamReader;
public class FileStorageActivity extends ListActivity implements OnClickListener {
private ArrayList<String> values=new ArrayList<String>();
InputStream inputStream;
String line;
@Override
public void onClick(View v) {
EditText editText=(EditText) findViewById(R.id.editText);
String tekst=editText.getText().toString()+"\n";
FileOutputStream outputStream;
try {
outputStream=openFileOutput("todoitems",MODE_PRIVATE);
outputStream.write(tekst.getBytes());
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
inputStream = openFileInput("todoitems");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
line = reader.readLine();
if (line != null){
values.add(line);
} else {
inputStream.close();
}
}catch (Exception e)
{
e.printStackTrace();
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,values);
setListAdapter(adapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
inputStream = openFileInput("todoitems");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
line = reader.readLine();
while (line != null){
values.add(line);
line = reader.readLine();
}
inputStream.close();
}catch (Exception e)
{
e.printStackTrace();
}
setContentView(R.layout.activity_file_storage);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,values);
setListAdapter(adapter);
}
}
可能的原因是,每次写入文件时,都会丢失旧数据。
替换此行
outputStream=openFileOutput("todoitems",MODE_PRIVATE);
用这条线
outputStream=openFileOutput("todoitems", MODE_PRIVATE | MODE_APPEND);