提供一个文本文件,文件中保存的是姓名和成绩
读取文件,对姓名和成绩按照成绩高低排序
将排序后的结果,保存到另一个文件中
数据中姓名,成绩可能重复
对于文件有要求,提供你的文件 studentscore.txt 排序后另存的文件sortstudentscore.txt.
import java.util.*;
import java.io.*;
public class ScoreSort {
public static void main(String[] args) throws IOException{
//定义集合对象,存储文本中的姓名和成绩
List<Student> list = new ArrayList<Student>();
//定义File对象,文件进行封装
File file = new File("c:\\student.txt");
//定义字符输入流,读取源文件
BufferedReader bfr = new BufferedReader(new FileReader(file));
String line = null;
while((line = bfr.readLine())!=null){
//字符串处理,切割,姓名和成绩
line = line.trim();
String[] str = line.split(" +");
//姓名str[0],成绩str[1]转成int,存储到集合
list.add(new Student(str[0],Integer.parseInt(str[1])));
}
//集合排序了,Collections工具类中的方法 sort,排序的是自定义对象
Collections.sort(list,new MyComparatorStudent());
//将排序后的内存,存储到新的文本文件中,要求文件名前面加sort
//获取源文件的文件名
String filename = file.getName();
filename = "sort"+filename;
//获取源文件的父路径
String parent = file.getParent();
//父路径和文件名组成File对象,传递给字符输出流写文件
File newFile = new File(parent,filename);
BufferedWriter bfw = new BufferedWriter(new FileWriter(newFile));
for(Student s : list){
bfw.write(s.getName()+" "+s.getScore());
bfw.newLine();
bfw.flush();
}
bfr.close();
bfw.close();
}
}
|
|