IO练习 联系客服

发布时间 : 星期三 文章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 readWorkerFromFile(File file),该方法读某 个文件,从文件信息中创建一个Worker 类型的List。 例如,假设文件内容如下: Tom/30/5000 Jim/25/3000 Terry/33/4500

则返回一个包含三个Worker 对象的List。