Записать список списков в текстовый файл Java - PullRequest
0 голосов
/ 28 мая 2020

У меня есть список списков для записи в текстовый файл:

ArrayList<ArrayList<String>> list = new ArrayList<>();

Пример списка:

[["sample_string_one","sample_string_two","sample_string_three"],["sample_string_four","sample_string_five","sample_string_six"]]

Запись в текстовый файл:

Path sPath = Paths.get("output.txt");
for (ArrayList sampleArr: list){ 
    Files.write(sPath,sampleArr);
 }

Ошибка:

Код работает, но ошибка заключается в том, что содержимое файла output.txt обновляется.

Ожидаемое содержимое output.txt:

sample_string_one
sample_string_two
sample_string_three
sample_string_four
sample_string_five
sample_string_six

Исходное содержимое:

sample_string_four
sample_string_five
sample_string_six

По сути, содержимое файла обновляется с учетом последнего внутреннего списка в списке списков. Любые предложения по решению этой проблемы были бы замечательными.

1 Ответ

2 голосов
/ 28 мая 2020

Попробуйте следующее:

Files.write(path, list, StandardOpenOption.APPEND);

Из документации: https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write - java .nio.file.Path-byte: A- java .nio.file.OpenOption. ..-

Если параметры отсутствуют, этот метод работает так, как если бы присутствовали параметры CREATE, TRUNCATE_EXISTING и WRITE.

public static final StandardOpenOption TRUNCATE_EXISTING Если файл уже существует и открыт для доступа WRITE, , его длина сокращается до 0 . Этот параметр игнорируется, если файл открыт только для доступа READ.

Вы хотите:

public static final StandardOpenOption APPEND Если файл открыт для доступа WRITE, тогда байт будет записано в конец файла, а не в начало. Если файл открыт для доступа на запись другими программами, то это зависит от файловой системы. c если запись в конец файла - atomi c.

...