Как убедиться, что приложение читает тот же файл, в который оно записало? - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно сохранить список.Для этого я использую файл.

Для записи я использую 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 ]

1 голос
/ 25 июня 2019

Используйте разные имена файлов, так как документация говорит

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"
0 голосов
/ 26 июня 2019

Оказалось, проблема была в объекте сканера.Не объект «Сканер», а тот факт, что я использую объект «Сканер».

Я использовал

scanner.next();

, из-за чего он читал

"[1,"

Я простопришлось заменить его на

scanner.nextLine();

, и он работает правильно.

Спасибо за ваши усилия.

...