IO流

流流流流流流流流流流流流流流流流流流流流流流流流流
I/O流!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1.什么是流?流是什么?
JAVA程序中,设备,文件对于数据的输入/输出操作都是以“流”的方式进行
读入数据:输入流,读出:输出流

 所有的文件在硬盘或在传输时都是以字节的方式进行的,包括图片等都是按字节的方式存储的,
 字符只有在内存中才会形成。
 
 字节流在操作时不会用到内存,字符流则会用到内存。
 
 即在操作时,字节流和字符流的操作完成之后都不关闭输出流,
 字节流的操作文件中存在输出的内容,而字符流操作的文件,为空白,输出的内容还在内存中

2.JAVA的字节流
InputStream是所有字节输入流的祖先
OutputStream是所有字节输出流的祖先

3.JAVA的字符流
Reader是所有读取字符串输入流的祖先
Writer是所有输出字符串的祖先
都是抽象类,不能直接new

  字节流转换为字符流时,实际上是Byte[]转换为String

4.字节流与字符流的区别
(1)字节流的操作的基本单位为字节;
字符流操作的基本单位为Unicode码元
(2)字节流默认不使用缓冲区
字符流使用缓冲区
(3)字节流在读取时,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节时,
先去查指定的编码表,将查到字符返回
(4)字节流可以处理所有类型数据,而字符流只能处理字符
5. Reader-BufferedReader,InputStreamReader-FileReader
Writer-BufferWriter,OutputStreamWriter-FileWriter
InputStream-FileInputStream,FilterInputStream-BufferedInputStream
OutputStream-FileOutputStream,FilterOutputStream-BufferedOutputStream

  1. I/O流可以分为节点流和处理流两大类(是否直接与特定的地方(如磁盘,内存,设备等)相连)
    节点流:可以从一个特定的地方读写数据
    处理流:对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
    如BufferedReader
    处理流的构造方法总是要带一个其他的流对象做参数,

7.缓冲流(处理流的一种)
计算机访问外部设备或文件,比直接访问内存慢的多。如果我们每次调用read()方法或
writer()方法访问外部设备,CPU需要花许多时间在等外部设备响应,而不是数据处理。
因此开辟一个内存缓冲区的内存区域,程序每次调用read和writer都是在这个缓冲区,
缓冲区满了以后,系统才将这个缓冲区的内容一次集中写到外部设备或读取进来给CPU。

   拥有缓冲区的流称为缓冲流,BufferedInputStream,BufferedOutputStream 
                             BufferedReader,BufferedWriter

   为了提高效率,可以用BufferedReader来很配合其他字节流,BufferedReader带有缓冲切,
   可以先把一批数据读入到缓冲区内。
   
   BufferedReader:
              BufferedReader(Reader in ):创建一个使用默认大小输出缓冲区的缓冲字符输入流对象
			  BufferedReader(Reader out,int sz):创建一个使用指定个大小输出缓冲区的缓冲字符输入流对象
			  readLine():读取一个文本行
			  
   BufferedWriter:
              BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流对象
			  BufferedWriter(Writer out, int sz):创建一个使用指定大小输出缓冲区的缓冲字符输出流对象
			  newLine():换行
			  
   BufferedInputStream和BufferedOutputStream
              

   验证缓冲流一BufferedReader:
               File file = new File("D:\\yin.text")
               Reader read = new FileReader(file);
			   BufferedReader bin = new BufferedReader(read);
			   str = bin.readLine();
			   bin.close();
			   read.close();
			   
   验证缓冲流二BufferedWriter:
			   FileWriter fw = new FileWriter(file);
			   BufferedWriter bw = new BufferedWriter(fw);
			   for(int i = 0; i < str.length; i++){
			   
			     bw.writer(str[i])
				 bw.newLine();
			   }
               bw.close();
			   fw.close();

8.转换流:
对读取到的字节数据进行指定编码的编码转换。
使用inputStreamReader时是默认的编码表
InputStreamReader isr = new InputStreamReader(new FileInputStream(“a.txt”))

  InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),utf-8)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值