千锋逆战班第31天

3.(流的分类)对于 FileInputStream 来说,从方向上来分,它是_输入_流,从数据单位上分,它是___字节__流,从功能上分,它是___节点__流。
4.(字节流)FileInputStream 有三个重载的 read 方法,其中:

I.无参的 read 方法返回值为__int___类型,表示__下一个数据字节;如果已到达文件末尾,则返回 -1。___。

AI.int read(byte[] bs)方法返回值表示__读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。___,参数表示___b - 存储读取数据的缓冲区。 __。

BI.int read(byte[] bs, int offset, int len) 方法返回值表示__读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。,参数分别表示____b - 存储读取数据的缓冲区。off - 目标数组 b 中的起始偏移量。len - 读取的最大字节数___。
5.(字节流)下面关于 FileInputStream 类型说法正确的是:AB
A. 创建 FileInputStream 对象是为了读取硬盘上的文件

B. 创建 FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常
C. 利用 FileInputStream 对象可以创建文件

D. FileInputStream 对象读取文件时,只能读取文本文件
6.(字节流)填空:

I.创建 FileOutputStream 对象时,如果对应的文件在硬盘上不存在,则会__创建文件___;如果对应的文件在硬盘上已经存在,则__创建新的文件并覆盖___;

AI.如果使用 FileOutputStream(String path, boolean append)构造方法创建 FileOutputStream 对象,并给定第二个参数为 true,则效果为___在后面追加数据__。 创建 FileOutputStream 时___会__(会|不会)产生异常。
7.代码改错

class TestFileInputStream{

public static void main(String args[]){

FileInputStream fin = new FileInputStream(“test.txt”);
 try{

System.out.println( fin.read() ); 
fin.close();

}catch(Exception e){

}

}

}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test7 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		FileInputStream fin=new FileInputStream("test.txt");
		try {
			System.out.println(fin.read());
			fin.close();
		}catch(Exception e) {
			
		}
	}

}

8.(字节流)利用 FileInputStream 和 FileOutputStream,完成下面的要求:

I. 用 FileOutputStream 在当前目录下创建一个文件“test.txt”,并向文件输出“Hello World”,如

果文件已存在,则在原有文件内容后面追加。

AI.用 FileInputStream 读入 test.txt 文件,并在控制台上打印出 test.txt 中的内容。

BI.要求用 try-catch-finally 处理异常,并且关闭流应放在 finally 块中。

public class Test8 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		FileOutputStream fo = null;
        FileInputStream fin = null;
        try {
            fo = new FileOutputStream("test.txt", true);
            fo.write("hello world".getBytes());
            fo.flush();
            fin = new FileInputStream("test.txt");
            int len;
            byte[] data = new byte[fin.available()];
            while ((len = fin.read(data)) != -1) {
                System.out.println(new String(data));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        		fo.close();
            }
        
		
	}

}

13.(对象序列化)

为了让某对象能够被序列化,要求其实现__Serializable___接口;

为了让该对象某个属性不参与序列化,应当使用__transient___修饰符。
15.(对象序列化)

在PrintWriter 中,有一个方法 print(Object obj)

在ObjectOutputStream 中,有一个方法 writeObject(Object obj)

请简述这两个方法的区别?

  1. PrintWriter按照平台的默认字符串编码将 String.valueOf(Object) 方法生成
    的字符串转换为字节,并完全以 write(int) 方法的方式写入这些字节。
  2. 将指定的对象写入 ObjectOutputStream。对象的类、类的签名,以及类
    及其所有超类型的非瞬态和非静态字段的值都将被写入。可以使
    用 writeObject 和 readObject 方法重写类的默认序列化。由此对象
    引用的对象是以可变迁的方式写入的,这样,可以通过 ObjectInputStream 重
    新构造这些对象的完全等价的图形。当 OutputStream 中出现问题或者遇到不
    应序列化的类时,将抛出异常。所有异常对于 OutputStream 而言都是致命
    的,使其处于不确定状态;并由调用者来忽略或恢复流的状态
    16.(对象序列化)有以下代码:
16.import java.io.*;

class Address{

private String addressName; 
private String zipCode; //构造方法…

//get/set 方法…

}

class Worker implements Serializable{ 
rivate 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("Beijing", "100000"); 
Worker w = new Worker("Tom", 18, addr);
 OutputStream os = new FileOutputStream("fout.dat"); ObjectOutputStream oout = new ObjectOutputStream(os); oout.writeObject(w);


oout.close();

}

}

选择正确答案:B

A.该程序编译出错

B.编译正常,运行时异常

编译正常,运行时也正常。

发布了23 篇原创文章 · 获赞 0 · 访问量 1937

猜你喜欢

转载自blog.csdn.net/funager/article/details/104908082