java高级开发 第十二章——输入流与输出流

1.File类、文件字节流

·输入输出流

程序为了获得外部数据,可以在数据源(文件、内存、网络套接字)上创建一个输入流,用read()方法读取数据。也可以在数据源上创建一个输出流,用write()方法将数据写到输出流中。

按照处理数据的类型分,数据流可以分为:二进制流和文本流。

二进制流:也称字节流,处理信息的基本单位是字节。

文本流:也称字符流,处理信息的基本单位是字符。

·File类   

主要用来表示物理磁盘上的实际文件或目录。

·文件字节流   

文件字节输入流   ——用来读文件。

(1)创建文件字节输入流   

FileInputStream类创建的对象称为文件字节输入流。

(2)读文件

int read()        //读一个字节      到文件末尾,返回-1

int read(byte b[])    //读b.length个字节       文件为空,返回-1

int read(byte b[],int off,int len)     //读len个字节,存放到数组b中的第off个位置

文件字节输出流   —— 用来写文件

(1)创建文件字节输出流     

FileOutputStream类创建的对象称为文件字节输出流。

如果FileOutputStream流要写的文件不存在,该流会首先创建文件再写入。

(2)写文件

write(byte b[])         //写b.length个字节到文件

·练习

(1)文件字节输入流

(2)文件字节输出流

2.文件字符流、缓冲流

·文件字符流

文件字符输出流   ——写数据

(1)创建输出流

File f=new File("./src/d12/test.txt");

FileWriter out=new FileWriter(f);

(2)写文件

write(int n)       //写一个字符

文件字符输入流   ——读数据

(1)创建输入流

File f=new File("./src/d12/test.txt");

FileReader in=new FileReader(f);

(2)读文件

int read();        //读一个字符

·缓冲流  按行读写  

实际应用中,经常需要读取一行数据,FileReader很难完成。

(1)缓冲输入流 BufferedReader ,它的源是FileReader   按行读文件

File file=new File("student.txt");

FileReader in=new FileReader(file);

BufferedReader bufferin=new BufferedReader(in);

(2)读一行

readLine()

(3)缓冲输出流 BufferedWriter 与FileWriter连接在一起

FileWriter out=new FileWriter("student.txt");

BufferedWriter bufferout=new BufferedWriter(out);

(4)写

write(String)

·练习

(1)文件字符输出、输入流:

(2)缓冲流

3.随机流、数据流、对象流

·随机流    

RandomAccessFile 既可以读也可以写

(1)构造方法:

RandomAccessFile(String name,String mode)

RandomAccessFile(File file,String mode)

参数mode取r(只读)或rw(可读写)

(2)读、写

方法:seek(long a),可以定位RandomAccessFile流的读写位置,其中参数a确定读写位置距离文件开头的字节个数。

方法:getFilePointer(),可以获取流的当前读写位置。

·数据流 

DataInputStream、DataOutputStream类创建的对象称为数据输入流、数据输出流。它们允许程序按照与机器无关的风格读取Java原始数据。

DataInputStream通常以FileInputStream作为底层流。

DataOutputStream通常以FileOutputStream作为底层流。

·对象流

ObjectInputStream、ObjectOutputStream类创建的对象称为对象输入流、对象输出流。

ObjectInputStream以InputStream子类作为底层流,如FileInputStream

ObjectOutputStream以OutputStream子类作为底层流,如FileOutputStream。

主要方法:

writeObject(Object obj)方法 将一个对象obj写入到一个文件。

readObject()方法,读取一个对象。

·序列化

使用对象流读/写对象时,要保证对象是序列化的。

class Student implements Serializable{  //标记接口,没有方法

}

·克隆

某对象的“复制品”,该复制品的变化不会引起原对象的变化,这样的复制品就称为原对象的克隆。

使用对象流很容易获取一个对象的克隆,只需将该对象写入再读回就是原对象的克隆。

·练习

(1)随机流

(2)数据流

(3)对象流

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值