Ответ 1
import java.io.FileWriter;
...
FileWriter writer = new FileWriter("output.txt");
for(String str: arr) {
writer.write(str + System.lineSeparator());
}
writer.close();
Я хочу написать 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());
}
import java.io.FileWriter;
...
FileWriter writer = new FileWriter("output.txt");
for(String str: arr) {
writer.write(str + System.lineSeparator());
}
writer.close();
Теперь вы можете сделать это с помощью одной строки кода. Создайте объект 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());
Я бы предложил использовать FileUtils из библиотеки ввода-вывода Apache Commons. Он будет создавать родительские папки выходного файла, если они не существуют. while Files.write(out,arrayList,Charset.defaultCharset());
не будет делать этого, бросая исключение, если родительские каталоги не существуют.
FileUtils.writeLines(new File("output.txt"), encoding, list);
Если вам нужно создать каждый элемент 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();
}
Если вы хотите сериализовать объект ArrayList в файл, чтобы снова прочитать его снова, используйте ObjectOuputStream/ObjectInputStream writeObject()/readObject(), поскольку ArrayList реализует Serializable. Мне непонятно, из вашего вопроса, если вы хотите сделать это или просто написать каждый отдельный элемент. Если так, тогда ответ Андрей ответит.
Вы можете использовать перегруженный метод ArrayList toString()
String tmp=arr.toString();
PrintWriter pw=new PrintWriter(new FileOutputStream(file));
pw.println(tmp.substring(1,tmp.length()-1));
Я думаю, что вы также можете использовать BufferedWriter:
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("note.txt")));
String stuffToWrite = info;
writer.write(stuffToWrite);
writer.close();
а до этого помни тоже добавь
import java.io.BufferedWriter;