Java文件操作(二)——IS,OS

输入与输出
我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界数据,或是将自身的数据发送到外界。比如,我们编写的程序想读取一个文本文件,又或者我们想将程序中的某些数据写如到一个文件中,这时我们就要使用输入与输出。

什么是输入?
输入是从一个外界进入到程序的方向,通常我们需要"读取“外界的数据时,使用输入。所以输入是用来读取数据的。

什么是输出?
输出是一个程序发送到外界的方向,通常我们需要”写出“数据到外界时,使用输出,所以输出是用来写出数据的。

节点流(低级流)与处理流(高级流)
按照流是否直接与特点的地方(如磁盘、内存、设备等)相连

节点流:可以从或向一个特定的地方(节点)读写数据。
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写

处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其它流的多次包装,称为流的连接。
通常节点流也称为低级流,处理流也称为高级流或过滤流。

IS和OS常用方法
InputStream与OutputStream是抽象类,是所有
字节输入流和输出流的父类。

InputStream是所有字节输入流的父类,其定义了基础的写出方法,常用方法如下:
void write(int d) 写出一个字节,写的是给定的Int的低八位
void write(byte[] d)将给定字节数组中的所有字节全部写出

创建FOS对象(重写模式)
FileOutputStream是文件的字节输出流,我们使用该流可以以字节为单位将数据写入文件。
构造方法:
FileOutputStream(File file)
创建一个向指定File对象表示的文件中写出数据的文件输出流
FileOutputStream(String filename)
创建一个向具有指定名称的文件中写出数据的文件输出流
这里需要注意,若指定的文件已经包含内容。那么当用FOS对其写入数据时,会将该文件中原有数据全部清除(FileOutputStream(String str,boolean append)支持一个重载的构造方法,第二个参数指定是否进行追加写操作,若不追加,当前文件所有内容都会被清除,这是与RandomAccessFile不同点)

FileInputStream
用于从文件中读取字节的流

BOS与BIS(高级流)
BOS基本工作原理
在向硬件设备做出写操作时,增大写出次数无疑会降低写出效率,为此我们可以使用缓冲输出流一次性批量写出若干数据减少写出次数来提高写出效率。
BufferedOutputStream缓冲输出流内部维护着一个缓冲区,每当我们向该流写数据时,都会先将数据存入缓冲区,当缓冲区已满时,缓冲流会将数据一次性全部写出。
flush()方法:强制将当前缓冲流中的缓冲区数据全部写出,无论缓冲区是否被装满

OOS与OIS(高级流)
ObjectOutputStream提供的writeObject()方法可以将给定的对象转化为一组字节后写出。
ObjectInputStream readObject()该流的作用是可以将一组字节转换为对应的对象
序列化某个对象时,该对象要实现serializable。若对象中某个对象字段无需序列化,则可加上transient关键字。
有个静态常量标识对象版本号serialVersionUID,当类的属性增加或修改了,若版本号不变,那么反序列化时会尽可能兼容现有版本,若版本号发生了改变,那么反序列化时会抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值