文件与集合之间转换
字符串
集合到文件
需求:把ArrayList集合中的字符串数据写入到文本文件。要求:每一个字符串元素作为文件中的一行数据
思路:
- 创建ArrayList集合
- 往集合中存储字符串元素
- 创建字符缓冲输出流对象
- 遍历集合,得到每一个字符串数据
- 调用字符缓冲输出流对象的方法写数据
- 释放资源
代码:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo1 {
public static void main(String[] args) throws IOException {
// 创建ArrayList集合
ArrayList<String> arrayList = new ArrayList<>();
// 往集合中存储字符串元素
arrayList.add("hello");
arrayList.add("world");
arrayList.add("java");
// 创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("java基础\\src\\train\\io\\java.txt"));
// 遍历集合,得到每一个字符串数据
for (String s : arrayList){
// 调用字符缓冲输出流对象的方法写数据
bw.write(s);
// 换行
bw.newLine();
}
// 释放资源
bw.close();
}
}
文件到集合
需求:把文本文件中的数据读取到集合中,并遍历集合。要求:文件中每一行数据是一个集合元素
思路:
- 创建字符缓冲输入流对象
- 创建ArrayList集合对象
- 调用字符缓冲输入流对象的方法读数据
- 把读取到的字符串数据存储到集合中
- 释放资源
- 遍历集合
代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Demo2 {
public static void main(String[] args) throws IOException {
// 创建字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("java基础\\src\\train\\io\\java.txt"));
// 创建ArrayList集合对象
ArrayList<String> arrayList = new ArrayList<>();
// 调用字符缓冲输入流对象的方法读数据
String line;
while ((line = br.readLine()) != null){
// 把读取到的字符串数据存储到集合中
arrayList.add(line);
}
// 释放资源
br.close();
// 遍历集合
for (String s : arrayList){
System.out.println(s);
}
}
}
实训:随机点名器
需求:
- 我有一个文件里面存储了班级同学的姓名,
- 每一个姓名占一行,
- 要求通过程序实现随机点名器
- 创建一个ArrayList
- 创建一个缓冲输入流对象
- 读数据
- 将数据写入ArrayList
- 关闭资源
- 利用Collections中的shuffle()随机打乱ArrayList
- 遍历ArrayList
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
public class Demo3 {
public static void main(String[] args) throws IOException {
// 创建一个ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// 创建一个缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("java基础\\src\\train\\io\\names.txt"));
// 读数据
String line;
while ((line = br.readLine()) != null){
// 将数据写入ArrayList
arrayList.add(line);
}
// 关闭资源
br.close();
// 利用Collections中的shuffle()随机打乱ArrayList
Collections.shuffle(arrayList);
// 遍历ArrayList
for (String s : arrayList){
System.out.println(s);
}
}
}
对象
集合到文件
思路:
- 定义学生类
- 创建ArrayList集合
- 创建学生对象
- 把学生对象添加到集合中
- 创建字符缓冲输出流对象
- 遍历集合,得到每一个学生对象
- 把学生对象的数据拼接成指定格式的字符串
- 调用字符缓冲输出流对象的方法写数据
- 释放资源
代码:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Demo1_2 {
public static void main(String[] args) throws IOException {
// 创建ArrayList集合
ArrayList<Student> arrayList = new ArrayList<>();
// 创建Student类对象
Student s1 = new Student("001", "小红", "12");
Student s2 = new Student("002", "小眀", "12");
Student s3 = new Student("003", "小兰", "13");
// 把学生对象添加到集合中
arrayList.add(s1);
arrayList.add(s2);
arrayList.add(s3);
// 创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("java基础\\src\\train\\io\\Student.txt"));
// 遍历集合,得到每一个学生对象
for (Student student : arrayList) {
// 把学生对象的数据拼接成指定格式的字符串
String uid = student.getUid();
String name = student.getName();
String age = student.getAge();
String s = uid + "," + name + "," + age;
// 调用字符缓冲输出流对象的方法写数据
bw.write(s);
// 换行
bw.newLine();
}
// 释放资源
bw.close();
}
}
文件到集合
思路:
- 定义学生类
- 创建字符缓冲输入流对象
- 创建ArrayList集合对象
- 调用字符缓冲输入流对象的方法读数据
- 把读取到的字符串数据用split(进行分割,得到一个字符串数组)
- 创建学生对象
- 把字符串数组中的每一个元素取出来对应的赋值给学生对象的成员变量值
- 把学生对象添加到集合
- 释放资源
- 遍历集合
代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Demo2_2 {
public static void main(String[] args) throws IOException {
// 创建字符缓冲输入流对象
BufferedReader br = new BufferedReader(new FileReader("java基础\\src\\train\\io\\Student.txt"));
// 创建ArrayList集合对象
ArrayList<Student> students = new ArrayList<>();
// 调用字符缓冲输入流对象的方法读数据
String line;
while ((line = br.readLine()) != null) {
// 把读取到的字符串数据用split(进行分割,得到一个字符串数组)
String[] s = line.split(",");
// 创建学生对象
// 把字符串数组中的每一个元素取出来对应的赋值给学生对象的成员变量值
// 把学生对象添加到集合
students.add(new Student(s[0],s[1],s[2]));
}
// 释放资源
br.close();
// 遍历集合
for (Student student : students){
// 需要重写toString()
System.out.println(student);
}
}
}