------- android培训、java培训、期待与您交流! ----------
IO
开发步骤
一,明确操作的对象
字符流
Read
FileReader fr = new FileReader("XXX.txt")
读文件对象,文件要存在 否则会报找不到文件异常
Writer
FileWriter fw = new FileWriter("XXX.txt")
声明要写人的文件地址,如果文件不存在会创建文件
字节流
InputStream
FileInputStream fis = new FileInputStream("需要读取的文件的地址")
创建一个字节流文件对象和文件相关联
文件不存在也会报异常
Input|Stream in = System.in;
创建一个字节流对象和键盘录入相关联
OutputStresm
二,调用操作流的方法
字符流
read
fr.read()一次读取一个数据
为了高效点
字节流
read
fis.read()
三,为了高效点引入数组进行缓存
字符流
read
定义一个char【】,让读取到的字符先存人数组,数组长度通常用1024
然后在定义一个变量来记住读取到数组中的字符数int len
然后用fr.read(char【】,0,len)就能一次读取到很多元素,从而减少了读的时间
当读到文件最后时会返回-1,这样就可以用循环来读取
write
也可以用读的方法定义一个数组,然后调用write(char,0,len)
这样就可以将数组的元素写入流对象
再调用flush将数组写入指定的文件
字节流
read
与字符流相同
write
与字符流相同
四,为了高效的读取,就是加强了读写(称为该类的装饰类)
字符流
BufferReader
BufferReader br = newBufferReader(new FileReader(“luolei。txt”)(BufferReader只是为filereader提高效率而存在))
所以在调用时要传入所需要提高的流对象
在操作时通常要定义一个String类型的变量(如:line)来记住该行的数据,当读到最后会返回null
BufferReader有个高效的读取方法readline();该方法能够一次读取一行但不会返回换行符
所以在写的时候要记得调用BufferWriter的newline方法
BufferWriter
同样也只是提高写的效率而存在的,所以与BufferReader类似,
写通常会用到br读到的数据,所以通常会 bw。writer(line);bw.newline();bw.flush()
字节流
BufferInputStream
该对象只是将高效的 read进行封装
它并没有readline()
如果操作的是文件对象,可以用转换流的方法将字节流转为字符流
InputStreamReader isr = new InputStreamReader(“传入所需要转换的字节流对象”)
得到的isr就是字符流对象
为了提高效率,能用到readline方法
BufferReader br = new BufferReader(isr);将该转换后的字符流装饰一下
然后用一个String变量记住每次读取的行数据,就可以用readline方法高效处理
BufferOutputStream
它只是将OutpuStream进行装饰
它没有newline方法
如果要操作的是字符流,而输出的是字节流,那么就要将字节流转为字符流
OutpuStreamWriter osw = new OutpuStreamWriter(“传入一个要输出的字节流对象”)
然而此时的osw还是字符流,所以可以用BufferWriter装饰
然后osw.writer("传入所需要转换的字符流对象")
然后可以用BUfferWriter的newline方法
这样就可以达到将一个字符流以字节流的形式输出
规律:
一,明确源对象
源对象:
InputStream
Reader
目的:
OutpuStream
Writer
二,操作的对象是不是纯文本
是
字节流
不是
字节流
三,体系明确后再确定用那个对象
通过设备来区分
源设备
内存
硬盘
键盘
目的
内存
硬盘
控制台