Java I/O读取和解析.emp文件示例
1.使用到的知识点
IO流
存数据和读数据
集合
用来存储解析的数据,对数据进行相关操作
文件操作
创建相关的文件存储数据
2.示例1
2.1存储几个员工数据到不同的文件
2.1.1题目要求
要求用户输入一个员工信息,格式为:
name,age,gender,salary,hiredate
例如:
张三,25,男,5000,2006-02-15
然后将输入的员工信息解析成Emp对象。
然后将该Emp对象的toString返回的字符串写入到文件中,该文件的
名字为:name.emp,以上面的例子,那么该文件名为:张三.emp
至少运行5次该程序,输入五个员工信息,并生成5个文件。
2.1.2相关代码
public class Exercise15 {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.println("输入员工信息:");
String message = scanner.next();
Emp object = getObject(message);
System.out.println(object);
saveData(object);
}
//解析输入的员工对象信息
private static Emp getObject(String string) throws ParseException {
String[] str = string.split(",");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Emp emp = new Emp(str[0], Integer.parseInt(str[1]), str[2], Double.parseDouble(str[3]), sdf.parse(str[4]));
return emp;
}
//保存数据
private static void saveData(Emp emp) throws IOException {
String name = emp.getName();
File file = new File(name+".emp");
if (!file.exists()) {
file.createNewFile();
}
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(emp);
oos.close();
System.out.println("存入数据成功!");
}
}
class Emp implements Serializable {
private String name;
private int age;
private String gender;
private double salary;
private Date hireDate;
public Emp() {
}
public Emp(String name, int age, String gender, double salary, Date hireDate) {
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
this.hireDate = hireDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public Date getHireDate() {
return hireDate;
}
public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");