我的学习之路_第十章_IO流

IO流

I: input 输入,读取到内存
O: Output 输出,写入文件
流: 数据流(字符,字节)

输入: 字节输入流(FileInputStream),字符输入流(FileReader)
输出: 字节输出流(FileOutputStream),字符输出流(FileWriter)


【字节流】

OutputStream:字节输入流,是所有字节输入流ed父类

所属包:java.io包中


★:公共的成员方法:

abstract 返回值:void write(int b) 写入一个字节
返回值:void write(vyte[] b) 写入一个字节数组 写入数据的时候,如果是整数,会查询ADCLL表,
如果是第一个是负数,第二个字节可以使正数,也可以使负数,查询的时候会把连个字节组成一个字节.
快速写入字节数组的方法:String类中有一个方法 返回值:byte[] getBytes(String charseName) 把字符串转换为字节数组
返回值:void write(byte[] b,int off, int len) 写入字节数组,off是开始索引,len写几个
返回值:void close() 关闭此输出流并释放与此流有关的所有系统资源.


【FileOutputStream】文件字节输出流
作用:把内存中的数据,以字节的方式,写入到文件中.

构造方法:
FileOutputStream(File file) 创建一个向指定File对象表示的文件中写入数据的文件输出流
FilePutputStream(String name) 创建一个向具体指定名称的文件中写入数据的输出文件流

构造方法的参数: file:文件 name:文件的路径 都是写入数据的目的地

特点:如果构造方法中指定的文件或者文件的路径所指向的文件不存在,构造方法就会创建一个文件,
如果没有打开追加写的开关,文件已经存在,则会覆盖.

使用步骤:
1:创建一个字节输出流对象FileOutputStream,绑定数据的目的地
2:使用FileOutoutStream中的write方法,把数据写入到文件中.
3:释放资源.

流写入数据的时候,会找到JVM,JVM会调用系统本地哦的方法完成写,使用完 流要关闭和系统有关的资源(释放内存).


文件的续写和换行:

追加写:使用两个参数的构造方法
FileOutputStream(File file, boolean append)
FileOutputStream(String name, boolean append)
参数:
File file,String name:写入数据的目的地
boolean append:追加写的开关,true:可以追加写(往之前的文件,继续写内容),fasle:不能追加写(覆盖之前的文件)


换行:要输入通用的换行符号

fos.write(System.getProperty("line.separator").getBytes());


【InputStream】字节输入流,是所有字节输入流的父类


成员方法:
返回值:int read():读取一个字节并返回,没有字节返回-1
返回值:int read(byte[]): 读取一定量的字节数,并存储到字节数组中,返回读取到的字节数
byte数组的作用:起到缓冲作用,一次可以往数组中缓冲多个字节,可以提高读取效率.
返回的int是每次读取的有效字节个数.

返回值:void close(): 关闭此文件输入流并释放与此流有关的所有系统资源


★ FileInputStream 文件字节输入流

作用:把文件中的数据,以字节的方式读取到内存中

构造方法:
FileInputStream(String name)
FileInputStream(File file)

参数:读取的哪个文件(数据源)

String name:字符串的文件路径
File file:读取的文件

使用步骤:
1.创建字节输入流对象FileInputStream,并且绑定数据源
2.使用FileInputStream对象中的方法read,读取文件
3.释放资源


【BufferedOutputStream】 字节缓冲输出流 extends OutputStream

字节缓冲输入流作用:给基本流早呢更加一个缓冲区,提高基本流的效率

继承了父类的公用的成员方法

构造方法:

BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输入流
参数:
OutputStream out: 字节输出流,可以使用FileOutputStream
参数传递时哪个字节输出流,就会给哪个字节输出流增加一个缓冲区,提高这个流的效率.

使用步骤:

1:创建FileOutputStream对象,绑定数据目的地
2:创建BufferedOutputStream对象,构造方法中传递FileOutputStream,提高FileOutputSteam效率
3:使用BufferedOutputStream中的方法,write,把数据写入缓冲区中
4:使用BufferedOutputStream中的flush,把缓冲区中的数据,刷新到文件中.(这里一定要刷新)
5:释放资源

【BufferedInputStream】字节缓冲输入流 extends InputStream
作用:给基本字节输入流增加一个缓冲区,提高基本字节输入流的效率

继承自父类的公共的成员方法

构造方法:
BufferedInputStream(InputStream in) 创建一个BufferedInputStream 并保存期参数,即输入流 in,以便将来使用.
参数:
InputStream in: 字节输入流,可以传递FileInputStream
参数传递的是哪个字节输入流对象,就会给哪个字节输入流对象增加一个缓冲区,提高该流的效率.

使用步骤:
1:创建FileInputStream对象,绑定数据源
2:创建BufferedInputStream对象,构造方法中传入FileInputStream,提高FileInputStream的读取效率.
3:使用BufferedInputStream中的方法 read,读取文件
4:释放资源

★ 总结:
字节流:操作的文件是非文本文件
字符流:操作的文件都是文本文件,一次读取一个字符,可以读取中文
文本文件:使用记事本打开,人能看懂的文件.

 

posted on 2017-06-15 21:08  贾_jia  阅读(181)  评论(0编辑  收藏  举报

导航