做橱窗设计的网站,石家庄智能模板建站,西宁最新消息今天,网站建设公司企业网站管理系统文章目录 FileReader读入数据的基本操作FileReader中使用reader()FileWrite写出数据的操作使用FileInputStream、FileOutputStream操作图片缓冲流#xff08;字节型#xff09;实现非文本文件的复制 复制文本文件也可以使用字节流#xff0c;但是不要在内存中读出来#xf… 文章目录 FileReader读入数据的基本操作FileReader中使用reader()FileWrite写出数据的操作使用FileInputStream、FileOutputStream操作图片缓冲流字节型实现非文本文件的复制 复制文本文件也可以使用字节流但是不要在内存中读出来比如不要system.out()出来
FileReader读入数据的基本操作
IO流的操作可以归纳为4步
java是面向对象的你要读入文件首先要有个对象来代表这个文件所以File file new File(hello.text);对文件的读写是针对流的操作所以也需要一个流的实例化FileReader fr new FileReader(file);此处因为操作的是文本文件是通过字符的方式将文件内容读到内存中所以用FileReader流之后你以别的方式操作别的内容需要换一种流对文件进行操作读入/写出关闭资源即关闭IO流 main方法中的new File()的地址是相较于本项目的相当于他是站在本项目而在测试案例中的new File()的地址是相较于本module的 优化一下 前面我们写的代码是通过抛异常的方式来处理异常的但是如果执行了new FileReader(file)开启了IO流然后fr.read()遇到了异常异常就被抛了出去导致这个fr.close()未执行IO流没有被关闭存在资源浪费、内存泄漏问题 所以要用try…catch…finally的方式来捕获异常以保证不管在哪里出现了异常IO流都会被关闭
FileReader中使用reader()
如果达到文件末尾返回-1。reader(char[] cbuf)相当于reader使用cbuf去装文件中的内容如果文件中的内容大于cbuf的长度那么能读取cbuf个字符否则读入的文件内容少于cbuf的长度而cbuf数组中会有未被覆盖的数据这就是错误写法的原因。举例假如hello.txt文件的内容为helloworld123那么第一次读取到的是hello第二次读取到的是world第三次读取到的是123ld所以判断每次读入了多少个字符要用reader(char[] cbuf)的返回值而非cbuf数组的长度
FileWrite写出数据的操作 使用FileInputStream、FileOutputStream操作图片 缓冲流字节型实现非文本文件的复制
缓冲流为了提高文件的读写效率之所以能提高读写效率是因为他内部提供了一个缓存区在进行读的时候他会先把文件读到buffer里面buffer中存满后再一次性写出buffer的默认大小是8个字节。bufferOutputStream中有个flush()方法用于刷新缓冲区即将缓存区的数据进行读写然后清空。 一般开发都用缓冲流。 内层流的关闭可以省略