我需要保存一个列表。我使用文件来做到这一点。
为了写作,我使用的是code1。
为了阅读,我使用的是code2。
code1和code2是同一类的不同功能,我在不同的活动中使用。
问题是,当我在一个活动中编写列表,而在另一活动中尝试读取它时,内容却不同。
code1
public void write(Context context, SwitchList list){ // Switchlist is custom class of two separate lists
FileOutputStream file = context.openFileOutput(name, Context.MODE_PRIVATE);
PrintWriter writer = new PrintWriter(file);
...
writer.close();
file.close();
}
code2
public SwitchList read(Context context){
FileInputStream file = context.openFileInput(name);
Scanner scanner = new Scanner(file);
...
scanner.close();
file.close();
}
如果我在一个活动中写了列表[1、2、3],我希望从另一个活动中阅读[1、2、3]。
但是我得到的是[1]。
答案 0 :(得分:1)
使用documentation所说的不同文件名
val filename = "myfile"
val fileContents = "Hello world!"
context.openFileOutput(filename, Context.MODE_PRIVATE).use {
it.write(fileContents.toByteArray())
}
使用静态常量文件名变量,以便可以从两个活动中访问它,例如:
const val FILE_ONE = "file_one"
const val FILE_TWO = "file_two"
const val FILE_THREE = "file_three"
答案 1 :(得分:0)
原来,问题出在Scanner对象中。 不是Scanner对象,而是我正在使用Scanner对象的事实。
我正在使用
scanner.next();
这导致它读取
"[1,"
我只需要替换为
scanner.nextLine();
它正常工作。
感谢您的努力。