一笔试小题---文件读写操作(希望对刚毕业找工作的朋友有所帮助)
datuo 写道
自己把文本里面一行的东西定义个对象。实现Comparable接口
随便你用什么排序都行了。还可以扩展到多个属性。
- class Student implements Comparable
- {
- int age;
- String name;
- public Student(int age, String name)
- {
- this.age = age;
- this.name = name;
- }
- public int compareTo(Object o)
- {
- Student s = (Student)o;
- return age > s.age ? 1:(age == s.age ? 0 : -1);
- }
- }
随便你用什么排序都行了。还可以扩展到多个属性。
这种思路是很好的,也能很好解决后面数字重复的问题。而且这种完全用了面向对象的思想。
代码如下:student.java封装文件中的对象, Test.java为测试类
- public class Student implements Comparable<Student> {
- private String name;
- private int orderNumber;
- public Student() {
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getOrderNumber() {
- return orderNumber;
- }
- public void setOrderNumber(int orderNumber) {
- this.orderNumber = orderNumber;
- }
- public int compareTo(Student o) {
- // return this.orderNumber>o.orderNumber?1:(this.orderNumber==o.orderNumber?0:-1);//小到大排序
- return o.orderNumber > this.orderNumber ? 1
- : (o.orderNumber == this.orderNumber ? 0 : -1);// 大到小排序
- }
- }
Test.java
- import java.io.BufferedReader;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- public class Test {
- public static void main(String[] ars){
- Test test = new Test();
- test.sortFile("d:/source.txt", "d:/dest.txt");
- }
- public void sortFile(String sourceFile, String destFile) {
- BufferedReader bReader = null;
- PrintWriter pWriter = null;
- try {
- bReader = new BufferedReader(new InputStreamReader(
- new FileInputStream(sourceFile)));
- String keyString = bReader.readLine();
- List<Student> list = new ArrayList<Student>();
- while (keyString != null) {
- String[] ar = keyString.split(" ");
- Student student = new Student();
- student.setName(ar[0]);
- student.setOrderNumber(Integer.parseInt(ar[1]));
- list.add(student);
- keyString = bReader.readLine();
- }
- System.out.println("读取文件成功...");
- Object[] objects = list.toArray();
- Arrays.sort(objects);
- pWriter = new PrintWriter(new FileOutputStream(destFile));
- for (Object o:objects) {
- Student student = (Student) o;
- pWriter.println(new StringBuilder(student.getName())
- .append(" ").append(student.getOrderNumber())
- .toString());
- }
- pWriter.flush();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (bReader != null) {
- try {
- bReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (pWriter != null) {
- pWriter.close();
- }
- }
- System.out.println("保存文件成功....");
- }
- }

浙公网安备 33010602011771号