Как записать ArrayList of Strings в текстовый файл? - PullRequest
37 голосов
/ 01 июля 2011

Я хочу записать ArrayList<String> в текстовый файл.

ArrayList создается с кодом:

ArrayList arr = new ArrayList();

StringTokenizer st = new StringTokenizer(
    line, ":Mode set - Out of Service In Service");

while(st.hasMoreTokens()){
    arr.add(st.nextToken());    
}

Ответы [ 7 ]

72 голосов
/ 01 июля 2011
import java.io.FileWriter;
...
FileWriter writer = new FileWriter("output.txt"); 
for(String str: arr) {
  writer.write(str + System.lineSeparator());
}
writer.close();
41 голосов
/ 29 июля 2014

В настоящее время вы можете сделать это с помощью одной строки кода. Создайте arrayList и объект Path, представляющий файл, в который вы хотите записать:

Path out = Paths.get("output.txt");
List<String> arrayList = new ArrayList<> ( Arrays.asList ( "a" , "b" , "c" ) );

Создайте фактический файл и заполните его текстом в ArrayList:

Files.write(out,arrayList,Charset.defaultCharset());
5 голосов
/ 30 ноября 2017

Я бы предложил использовать FileUtils из библиотеки ввода-вывода Apache Commons. Он создаст родительские папки выходного файла, если они не существуют. В то время как Files.write(out,arrayList,Charset.defaultCharset()); этого не сделает, выдает исключение, если родительские каталоги не будутсуществует.

FileUtils.writeLines(new File("output.txt"), encoding, list);
4 голосов
/ 11 марта 2016

Если вам нужно создать каждый элемент ArrayList в одной строке, вы можете использовать этот код

private void createFile(String file, ArrayList<String> arrData)
            throws IOException {
        FileWriter writer = new FileWriter(file + ".txt");
        int size = arrData.size();
        for (int i=0;i<size;i++) {
            String str = arrData.get(i).toString();
            writer.write(str);
            if(i < size-1)**//This prevent creating a blank like at the end of the file**
                writer.write("\n");
        }
        writer.close();
    }
3 голосов
/ 01 июля 2011

Если вы хотите сериализовать объект ArrayList в файл, чтобы вы могли снова прочитать его позже, используйте ObjectOuputStream / ObjectInputStream writeObject () / readObject (), поскольку ArrayList реализует Serializable .Из вашего вопроса мне не ясно, хотите ли вы сделать это или просто написать каждый отдельный элемент.Если так, то ответ Андрея сделает это.

2 голосов
/ 01 июля 2011

Вы можете использовать перегруженный метод ArrayList toString()

String tmp=arr.toString();
PrintWriter pw=new PrintWriter(new FileOutputStream(file));
pw.println(tmp.substring(1,tmp.length()-1));
1 голос
/ 08 мая 2018

Я думаю, вы также можете использовать BufferedWriter:

BufferedWriter writer = new BufferedWriter(new FileWriter(new File("note.txt")));

String stuffToWrite = info;

writer.write(stuffToWrite);

writer.close();

и перед этим помните тоже добавьте

import java.io.BufferedWriter;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...