如何确保应用程序正在读取与写入文件相同的文件?

时间:2019-06-25 07:37:14

标签: android file android-activity java.util.scanner file-read

我需要保存一个列表。我使用文件来做到这一点。

为了写作,我使用的是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]。

2 个答案:

答案 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();

它正常工作。

感谢您的努力。