发布时间 : 星期三 文章IO练习更新完毕开始阅读4349b44fbceb19e8b9f6ba6c
oos.close();
ObjectInputStream oin = new ObjectInputStream( new FileInputStream(“stu.dat”) );
Student stu2 = (Student) oin.readObject(); oin.close();
System.out.println(stu2); } }
19. *(对象序列化)有以下代码: import java.io.*; class Address{
private String addressName; private String zipCode; //构造方法? //get/set 方法? }
class Worker implements Serializable{ private String name; private int age;
private Address address; //构造方法? //get/set 方法? }
public class TestSerializable {
public static void main(String args[]) throws Exception{ Address addr = new Address(\Worker w = new Worker(\
ObjectOutputStream oout = new ObjectOutputStream( new FileOutputStream(\oout.writeObject(w); oout.close(); } }
选择正确答案
A. 该程序编译出错
B. 编译正常,运行时异常 C. 编译正常,运行时也正常。
20. *(字节流,BufferedReader)完成下面操作。
在当前目录下创建一个worldcup.txt 的文本文件,其格式如下: 2006/意大利 2002/巴西 ?
该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。
要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如果该年
没有举办世界杯,则输出“没有举办世界杯” 21. **(Buffered 流,缓冲区)有下面代码 import java.io.*;
public class TestBufferedWriter{
public static void main(String args[]) throws Exception{ FileWriter fw = new FileWriter(“test.txt”); BufferedWriter bw = new BufferedWriter(fw); String str = “Hello World”; bw.write(str); } }
在处放入什么代码,能够使得test.txt 文件被正确写入? A. bw.close() B. bw.flush(); C. fw.close();
22. **(Data 流)在原有自动分配id 的Account 对象基础上,利用Data 流,完成下面的要 求:
要求每次启动程序时,id 的自动分配都能在上一次运行的基础上继续。例如,假设有以 下代码:
public class TestAccount{
public static void main(String args[]){ Account a1 = new Account(); Account a2 = new Account(); Account a3 = new Account(); System.out.println(a1.getId() ); System.out.println(a2.getId() ); System.out.println(a3.getId() ); } }
编译之后,第一次运行 java TestAccount 时,输出 100001 100002 100003 第二次运行 java TestAccount 时,输出 100004 100005 100006
23. **(综合)
从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文件相同 路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原文件的拷贝。 例如:读入
/home/java/photo.jpg 则创建一个文件
/home/java/copy_photo.jpg
新文件内容和原文件内容相同。
24. ***(可选,综合)用两种方式保存对象。 有Worker 对象,部分代码如下: class Worker{
private String name; private int age
private double salary; //构造方法 ?
//get/set 方法 ?
//toString 方法 ? }
1) 完善Worker 对象,并使其能使用对象序列化机制。
2) 利用ObjectOutputStream 存入两个Worker 对象, 然后使用 ObjectInputStream 读出这两个对象,并打印这两个对象的信息。
3) 写一个方法saveWorkerToFile(Worker w, File file),该方法完成下面的 功能:
假设有一个Worker 对象w1,File 对象f1 如下: Worker w1 = new Worker(“Tom”, 30, 5000); File f1 = new File(“test.txt”);
则调用saveWorkerToFile(w1, f1),会在test.txt 中增加一行: Tom/30/5000
4) 写一个方法List
则返回一个包含三个Worker 对象的List。