一笔试小题---文件读写操作(希望对刚毕业找工作的朋友有所帮助)

datuo 写道
自己把文本里面一行的东西定义个对象。实现Comparable接口
Java代码 复制代码
  1. class Student implements Comparable   
  2. {   
  3.  int age;   
  4.  String name;    
  5.     
  6.  public Student(int age, String name)   
  7.  {   
  8.   this.age  = age;   
  9.   this.name = name;     
  10.  }   
  11.  public int compareTo(Object o)   
  12.  {   
  13.   Student s = (Student)o;   
  14.   return age > s.age ? 1:(age == s.age ? 0 : -1);   
  15.  }   
  16. }  

随便你用什么排序都行了。还可以扩展到多个属性。

 

 这种思路是很好的,也能很好解决后面数字重复的问题。而且这种完全用了面向对象的思想。

 代码如下:student.java封装文件中的对象, Test.java为测试类

Java代码 复制代码
  1. public class Student implements Comparable<Student> {   
  2.     private String name;   
  3.     private int orderNumber;   
  4.   
  5.     public Student() {   
  6.   
  7.     }   
  8.   
  9.     public String getName() {   
  10.         return name;   
  11.     }   
  12.   
  13.     public void setName(String name) {   
  14.         this.name = name;   
  15.     }   
  16.   
  17.     public int getOrderNumber() {   
  18.         return orderNumber;   
  19.     }   
  20.   
  21.     public void setOrderNumber(int orderNumber) {   
  22.         this.orderNumber = orderNumber;   
  23.     }   
  24.   
  25.     public int compareTo(Student o) {   
  26.         // return this.orderNumber>o.orderNumber?1:(this.orderNumber==o.orderNumber?0:-1);//小到大排序   
  27.     return o.orderNumber > this.orderNumber ? 1  
  28.                 : (o.orderNumber == this.orderNumber ? 0 : -1);// 大到小排序   
  29.   
  30.     }   
  31. }  

 

Test.java

Java代码 复制代码
  1. import java.io.BufferedReader;   
  2. import java.io.FileInputStream;   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.InputStreamReader;   
  6. import java.io.PrintWriter;   
  7. import java.util.ArrayList;   
  8. import java.util.Arrays;   
  9. import java.util.List;   
  10.   
  11. public class Test {   
  12.     public static void main(String[] ars){         
  13.         Test test = new Test();   
  14.         test.sortFile("d:/source.txt""d:/dest.txt");         
  15.     }   
  16.   
  17.     public void sortFile(String sourceFile, String destFile) {   
  18.         BufferedReader bReader = null;   
  19.         PrintWriter pWriter = null;   
  20.         try {   
  21.             bReader = new BufferedReader(new InputStreamReader(   
  22.                     new FileInputStream(sourceFile)));   
  23.             String keyString = bReader.readLine();         
  24.             List<Student> list = new ArrayList<Student>();   
  25.             while (keyString != null) {   
  26.                 String[] ar = keyString.split(" ");   
  27.                 Student student = new Student();   
  28.                 student.setName(ar[0]);   
  29.                 student.setOrderNumber(Integer.parseInt(ar[1]));               
  30.                 list.add(student);   
  31.                 keyString = bReader.readLine();   
  32.             }   
  33.             System.out.println("读取文件成功...");   
  34.             Object[] objects = list.toArray();   
  35.             Arrays.sort(objects);   
  36.             pWriter = new PrintWriter(new FileOutputStream(destFile));             
  37.             for (Object o:objects) {   
  38.                 Student student = (Student) o;   
  39.                 pWriter.println(new StringBuilder(student.getName())   
  40.                         .append(" ").append(student.getOrderNumber())   
  41.                         .toString());   
  42.             }   
  43.             pWriter.flush();   
  44.         } catch (Exception e) {   
  45.             e.printStackTrace();   
  46.         } finally {   
  47.             if (bReader != null) {   
  48.                 try {   
  49.                     bReader.close();   
  50.                 } catch (IOException e) {   
  51.                     e.printStackTrace();   
  52.                 }   
  53.             }   
  54.             if (pWriter != null) {   
  55.                 pWriter.close();   
  56.             }   
  57.         }   
  58.         System.out.println("保存文件成功....");   
  59.     }   
  60. }  
posted @ 2009-01-08 19:54  猪鼻驴耳  阅读(168)  评论(0)    收藏  举报