文件到集合:读取文件每一行并把内容添加至集合
ArrayList<String> list = new ArrayList<>();
//创建缓冲字符输入流,读取D盘下的fos.txt的内容
BufferedReader br = new BufferedReader(new FileReader("D:/IdeaProject/untitledDemo/fos.txt"));
String line;
while ((line = br.readLine())!=null) {
//每读取一行,将其添加到list集合里
list.add(line);
}
br.close();
//打印输出list集合里的每一行内容
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
集合到文件:读取集合里的每一个元素并将其添加到文件里
ArrayList<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("hello world");
//创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/IdeaProject/untitledDemo/fos.txt"));
for (String s:list){
bw.write(s);
//写入line separator,保证list里每一个元素是新的一行
bw.newLine();
}
bw.flush();
bw.close();
随机点名器:
一个File里存储学生的名字,每个名字占一行,要求读取File里的名字到集合,并实现随机点名。
前半部分就是文件到集合的代码。
难点是生成集合后怎么实现随机点名。
Random r = new Random();
//生成的随机数范围是[0, list.size()),包括0,不包括list.size()
int index = r.nextInt(list.size());
String name = list.get(index);
Random类的使用也是老历史遗留问题了。。。重点记住无参构造方法和nextInt方法。
集合到文件(改进版):
把ArrayList中的学生数据写入文本文件,要求每一个学生对象的数据写到一行。
格式:学号,姓名,年龄,地址
//创建字符缓冲输出流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/IdeaProject/untitledDemo/test.txt"));
//添加学生对象到list集合中
Student s1 = new Student("20125659","Nina",22,"郑州");
Student s2 = new Student("20125658","Mike",21,"多伦多");
Student s3 = new Student("20125657","John",29,"温哥华");
ArrayList<Student> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
for (Student s: list){
//拼接要求的字符串
StringBuilder sb = new StringBuilder();
sb.append(s.getSid()+","+s.getName()+","+s.getAge()+","+s.getAddress());
//调用字符缓冲输出流写数据
bw.write(sb.toString());
bw.newLine();
}
bw.flush();
bw.close();
文件到集合(改进版):
读取文件里的内容到集合中。
要求:每一行数据是一个学生对象的成员变量值
BufferedReader br = new BufferedReader(new FileReader("D:/IdeaProject/untitledDemo/test.txt"));
ArrayList<Student> list = new ArrayList<>();
String line;
while ((line=br.readLine())!=null){
//字符串分割
String[] stuArray = line.split(",");
//创建学生对象,并向里面填数据
Student student = new Student();
//20125657,John,29,Ottowa
student.setSid(stuArray[0]);
student.setName(stuArray[1]);
//String转化为Integer
student.setAge(Integer.parseInt(stuArray[2]));
student.setAddress(stuArray[3]);
list.add(student);
}
br.close();