Person中有name和age属性,要求存储若干个Person对象到磁盘中, 使用 RandomAccessFile流来实现
2017-08-17 15:33
274 查看
package Rand;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* 要求:Person中有name和age属性,要求存储若干个Person对象到磁盘中, 使用 RandomAccessFile流来实现
*
*/
public class RandomAccessFileDemo {
}
class Person {
private String name;
private int age;
}
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* 要求:Person中有name和age属性,要求存储若干个Person对象到磁盘中, 使用 RandomAccessFile流来实现
*
*/
public class RandomAccessFileDemo {
public static void main(String[] args) { System.out.println("start..."); List<Person> list = new ArrayList<Person>(); list.add(new Person("张三", 21)); list.add(new Person("李四", 22)); list.add(new Person("王五", 23)); list.add(new Person("小计", 24)); list.add(new Person("小菜次", 25)); try { RandomAccessFile raf = new RandomAccessFile("e:\\aaa.txt", "rw"); for (Person person : list) { raf.writeChars(person.getName()); raf.writeInt(person.getAge()); } System.out.println("请输入要显示第几个人的信息:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int index = Person.TOTAL_SIZE * (n - 1); raf.seek(index); String name = getChars(raf); int age = raf.readInt(); System.out.println("姓名:" + name); System.out.println("年龄:" + age); raf.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("end..."); } private static String getChars(RandomAccessFile raf) throws IOException { StringBuilder sb = new StringBuilder(); for (int i = 0; i < Person.NAME_SIZE; i++) { sb.append(raf.readChar()); } return sb.toString(); }
}
class Person {
private String name;
private int age;
public static final int NAME_SIZE = 15; public static final int TOTAL_SIZE = 15 * 2 + 4; public Person(String name, int age) { super(); setName(name); this.age = age; } public String getName() { return name; } public void setName(String name) { StringBuilder sb = new StringBuilder(name != null ? name : ""); sb.setLength(NAME_SIZE); this.name = sb.toString(); } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "Person [name = " + name + ",age=" + age + "]"; }
}
相关文章推荐
- 定义Person类,Person类中含有两个属性name 和age ,使用compare方法比较两个对象是否为同一个对象。假定name 和age 都相同就似为同一个对象
- .使用面向对象思想,输出员工信息并计算员工的工资。实现过程为:定义一个部门(Department)类,该类有部门编号(Id)、部门名称(Name)属性; 再定义一个员工(Employee)类,该类的属
- 编程题:1. var person = '{name:"Lily",sex:"famale",age:24,country:"US"}';将person转换成JSON对象并便利每个属性值。
- 使用堆栈(Stack)来模拟队列(FIFO)功能,要求数据必须存储在堆栈内部.需要实现enqueue(入栈),dequeue(出栈),isEmpty(判空)三个功能,并给出单元测试.
- 66.6 设计一个雇员类 employee,存储雇员的姓名、编号和生日等信息,要求该类使用 上一题设计的日期类作为成员对象。雇员类的使用如下: //定义一个雇员,其雇员号为 10,生日为 1970 年
- window对象的status、location、name、self、opener属性的使用
- 关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)
- 写一个算法,使对象可以像数组一样进行foreach循环,要求属性必须是私有的(Interator模式的PHP5实现,写一类实现Interator接口)
- List集合根据存储对象的属性字段排序实现
- . 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列,要求执行效率高,并说明如何改善执行效率(该函数必须自己实现,不能使用php函数)。
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
- FMDB封装,用OC方法存储model,不用写SQL语句。使用runtime获取对象属性
- 使用 Comparable 接口实现对象的属性排序
- 存储自定义对象并遍历Student(name,age)
- 根据对象的某一属性进行排序的js代码(如:name,age)
- window对象的status、location、name、self、opener属性的使用
- 根据对象的某一属性进行排序的js代码(如:name,age)
- javascript window对象的status、location、name、self、opener属性的使用
- Android中使用sqlite数据库实现对象的存储
- vba编程不知道该使用什么对象属性方法实现操作的时候用宏录制来查阅代码