package exercise;

import java.io.IOException; import java.io.RandomAccessFile; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List;

public class Exercise { public static void main(String[] args) { List list = new ArrayList<>(); try (RandomAccessFile raf = new RandomAccessFile("emp.dat", "r")) { for (int i = 0; i < raf.length() / 56; i++) { byte[] data = new byte[32]; raf.read(data); String name = new String(data, StandardCharsets.UTF_8).trim(); short age = raf.readShort(); byte[] genderBytes = new byte[10]; raf.read(genderBytes); String gender = new String(genderBytes, StandardCharsets.UTF_8).trim(); int salary = raf.readInt(); long hiredate = raf.readLong(); Emp emp = new Emp(name, age, gender, salary, hiredate); list.add(emp); } Collections.sort(list, new Comparator() { @Override public int compare(Emp o1, Emp o2) { return (int) (o2.getHiredate() - o1.getHiredate()); } }); for (Emp emp : list) { System.out.println(emp); } } catch (IOException e) { e.printStackTrace(); } } }

class Emp { private String name; private short age; private String gender; private int salary; private long hiredate;

public Emp(String name, short age, String gender, int salary, long hiredate) {
    this.name = name;
    this.age = age;
    this.gender = gender;
    this.salary = salary;
    this.hiredate = hiredate;
}

public String getName() {
    return name;
}

public short getAge() {
    return age;
}

public String getGender() {
    return gender;
}

public int getSalary() {
    return salary;
}

public long getHiredate() {
    return hiredate;
}

@Override
public String toString() {
    return "Emp{" +
            "name='" + name + "'" +
            ", age=" + age +
            ", gender='" + gender + "'" +
            ", salary=" + salary +
            ", hiredate=" + hiredate +
            '}';
}

}

Java 读取二进制文件解析员工信息并排序输出 - 使用 RandomAccessFile 和 异常处理

原文地址: https://www.cveoy.top/t/topic/oH8V 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录