在千锋“逆战”学习第31天 io练习(1)

在千锋"逆战”学习第31天,
每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运!
加油!

3
(流的分类)对于FileInputStream来说,从方向上来分,它是___流 ,从数据单位上分,它是____流,从功能上分,它是_流。
输入
字节
节点
4
(字节流) FileInputStream有三个重载的read方法,其中:
I.
无参的read方法返回值为 ___ 类型,表示__。
II. int read(byte[] bs)方法返回值表示____ , 参数表示_
II.. int read(byte[] bs, int offset, int len)方法返回值表示____ , 参数分别表示_

1. int  
2. 下一个数据字节;如果已到达文件末尾,则返回 -1。 
3. 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
4. b - 存储读取数据的缓冲区。 
5. 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
6. b - 存储读取数据的缓冲区。off - 目标数组 b 中的起始偏移量。len - 读取的最大字节数。
5
(字节流)下面关于FileInputStream类型说法正确的是:
A.创建FilelnputStream对象是为了读取硬盘上的文件
B,创建FileInputStream 对象时,如果硬盘.上对应的文件不存在,则抛出一个异常
C .利用FileInputStream对象可以创建文件
D,FileInputStream 对象读取文件时,只能读取文本文件
AB
6
I. 创建FileOutputStream对象时,如果对应的文件在硬盘上不存在,则会____ ;如果对应的文件在硬
盘上已经存在,则___ ;
II.如果使用 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 ,完成下面的要求: 
l. 用FileOutputStream在当前目录下创建一 个文件"test.txt" ,并向文件输出"Hello World" ,如
果文件已存在,则在原有文件内容后面追加。
II.用FileInputStream读入test.txt 文件,并在控制台上打印出test.txt 中的内容。
II.要求用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
为了让某对象能够被序列化,要求其实现
接口;
为了让该对象某个属性不参与序列化,应当使用
修饰符。


1. __Serializable____
2. __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
class Address{
	private String addressName;
	private String zipCode;
	public Address(String addressName, String zipCode) {
		this.addressName = addressName;
		this.zipCode = zipCode;
	}
	public String getAddressName() {
		return addressName;
	}
	public void setAddressName(String addressName) {
		this.addressName = addressName;
	}
	public String getZipCode() {
		return zipCode;
	}
	public void setZipCode(String zipCode) {
		this.zipCode = zipCode;
	}
}
class Worker implements Serializable{
	private String name;
	private int age;
	private Address address;
	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 Worker(String name, int age, Address address) {
		this.name = name;
		this.age = age;
		this.address = address;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
}
public class Test16 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		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.编译正常,运行时异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值