📄 filetest.java
字号:
package exec.day1016;
import java.io.*;
import java.util.*;
public class FileTest {
private HashSet allCourses;//所有的课程对象
private HashSet allStudents;//所有的学生对象
public FileTest(){
allCourses = new HashSet();
allStudents = new HashSet();
}
public static void main(String args[]){
FileTest t = new FileTest();
String courseName = "D:\\corejava\\1016\\course.txt";
String stuName = "D:\\corejava\\1016\\student.txt";
t.readFile(Course.class, courseName);
t.readFile(Student.class, stuName);
//遍历课程集合
for(Object obj:t.allCourses){
System.out.println(obj);
}
//遍历学生集合
for(Object obj:t.allStudents){
System.out.println(obj);
}
String writeFile = "D:\\corejava\\1016\\selected.txt";
t.writeFile(writeFile);
}
/**
* 按要求的格式写入文件
* 学生姓名:选课名称1,选课名称2,...
* @param fileName
*/
public void writeFile(String fileName){
try {
PrintStream ps = new PrintStream(fileName);
//遍历学生集合,获取学生姓名及选修的课程
for(Object obj:allStudents){
Student s = (Student)obj;
ps.print(s.getName()+": ");
//遍历选修的课程,获取每个课程名称
for(Object o:s.getSelectedCourses()){
Course c = (Course)o;
ps.print(c.getName()+",");
}
ps.println();
}
ps.flush();
ps.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* 读取文件
* @param c 哪一个文件
* @param fileName 文件名称
*/
public void readFile(Class c,String fileName){
BufferedReader br = null;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(fileName)));
String s = null;
while((s=br.readLine())!=null){
if(s.equals("")){
continue;
}
if(c==Course.class){
//获取课程对象,并添加到集合中
Course course = parseCourse(s);
allCourses.add(course);
}
if(c==Student.class){
allStudents.add(parseStudent(s));
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if(br!=null)br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 对读取到的课程文件的一行进行解析,获取课程对象
* 例如:001:UNIX:4
* @param str
* @return
*/
public Course parseCourse(String str){
String s[] = str.split(":");
return new Course(s[0],s[1],Integer.parseInt(s[2]));
}
/**
* 对读取到的学生文件的一行进行解析,并获取学生对象
* 例如:001:陈飞志:计算机大专:001,002,003,004,005
* @param str
* @return
*/
public Student parseStudent(String str){
//获取通过:分割的学生属性子字符串
String s[] = str.split(":");
//构建学生对象
Student student = new Student(s[0],s[1],s[2]);
//获取通过,分割的课程编号子字符串
String ss[] = s[3].split(",");
//遍历数组,为学生添加选修的课程
for(String number:ss){
//遍历从课程文件中读取的所有课程对象的集合
for(Object obj:allCourses){
Course c = (Course)obj;
if(number.equals(c.getNumber())){
student.addCourse(c);
break;
}
}
}
return student;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -