学习笔记——IO流

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。


JAVA中IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流


字符流和字节流:


字节流两个基类:
InputStream OutputStream


字符流两个基类:
Reader Writer
字节流和字符流的区别:
1,字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
2,处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
注意事项:字节流不能显示汉字,而字符流能够。
 建议复制文本文件用字符流,复制其它格式的文件用字节流。


输入流和输出流


最常用的两大输入流:
read input


最常用的两在输出流:
writer output
注意事项:对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。


1,InputStream
   InputStream 是所有的输入字节流的父类,它是一个抽象类,其常用方法有:
   int read(); 从输入流中读取数据的下一个字节。
   int read(byte[] b); 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b中。
   int read(byte[] b, int off, int len);  将输入流中从off到len之间的数据字节读入b 数组中。
   void close(); 关闭输入流。  


   在其已实现的子类中用得最多的是FileInputStream(直接子类)和BufferedInputStream(间接子类)等。
   
   FileInputStream:从文件系统中的某个文件中获得输入字节,其常用方法有:
   int read(); 从此输入流中读取一个数据字节。
   int read(byte[] b);将输入流中读取到的数据存储到缓冲数组b中。
   int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。
   void close(); 关闭输入流。  


   BufferedInputStream缓冲输入流,即缓冲区,缓冲区的出现是为了提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。
   其常用方法有:
   int read();  从输入流中读取数据的下一个字节
   int read(byte[] b, int off, int len);将输入流中从off到len之间的数据字节读入到b数组中。  
  
2,OutputStream
   OutputStream 是所有的输出字节流的父类,它是一个抽象类,其常用方法有:
   void write(int b); 将指定的字节写入此输出流中。 
   void write(byte[] b); 将数组b中的数据写入到此输出流中。
   void flush();将流中数据强制刷新写出出来。
   void close();关闭输出流。   


   在其已实现的子类中用得最多的是FileOutputStream(直接子类)和BufferedOutputStream(间接子类)等。
   
   FileOutputStream 用于写入诸如图像数据之类的原始字节的流,其常用方法有:
   void write(int b);将指定的字节写入此输出流中。  
   void write(byte[] b); 将数组b中的数据写入到此输出流中。
   void flush();将流中数据强制刷新写出出来。
   void close();关闭输出流。


   BufferedOutputStream是实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,
   而不必针对每次字节写入调用底层系统。它能够提高流的操作效率而出现的,在创建缓冲区之前,必须要先有流对象。


3,Reader
   Reader 是所有的输入字符流的父类,它是一个抽象类,其常用方法:
   int read();读取单个字符。
   int read(char[] cbuf); 将字符读入数组。
   int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
   void close();关闭输入流。 


   在其已实现的子类中用得最多的是FileReader(间接子类)和BufferedReader(直接子类)。    


   FileReader 用于读取字符流,其常用方法有从InputStreamReader继承过来的close();
   和从Reader继承过来的read();


   BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
   其常用方法:
   int read();读取单个字符。
   int read(char[] cbuf, int off, int len);将字符读入数组的某一部分。
   String readLine();读取一个文本行。
   void close();关闭该流。 


4,Writer
   Writer 是所有的输出字符流的父类,它是一个抽象类。
   其常用方法:
   void write(int c); 写入单个字符。
   void write(char[] cbuf); 写入字符数组。
   void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。   
   void flush(); 刷新该流的缓冲。 
   void close(); 关闭该流。 


   在其已实现的子类中用得最多的是 FileWriter(间接子类)和BufferedWriter(直接子类)。


   FileWriter用于写入字符流。
   其常用方法有从OutputStreamWriter继承的close(); flush();还有从Writer继承的writer();


   BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
   其常用方法:
   void write(int c); 写入单个字符。
   void write(String s, int off, int len); 写入字符串的某一部分。
   void write(char[] cbuf, int off, int len); 写入字符数组的某一部分。  
   void flush(); 刷新该流的缓冲。 
   void close(); 关闭该流。


5,InputStreamReader
   InputStreamReader:字节到字符的桥梁


6,OutputStreamWriter
   OutputStreamWriter:字符到字节的桥梁


7,File
   File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的来操作文件和文件夹。 
   File类常见方法:


   1,创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回fals
与输出流不一样,输出流对象一建立就创建文件,而且文件已经存在会覆盖
boolean mkdir():创建文件夹
boolean mkdirs():创建多级文件夹


   2,删除
boolean delete():删除失败返回false,如果文件正在被使用,则删除不了返回false
void deleteOnExit():在程序退出时删除指定文件


   3,判断
boolean exists():文件是否存在
isFile():是否是文件
isDirectory():是否是文件夹
isHidden():是否是隐藏
isAbsolute():是否是绝对路径


   4,获取信息
getName();获取名字
getPath();获取路径
getParent();//获取父目录  在绝对路径下获取父目录,否则返回是null
  //如果相对路径中有上一层目录,那么该目录就是返回结果


getAbsolutePath();//获取绝对目录
long lastModified();//最后一次修改(返回时间)
long length();//长度(大小)


8,打印流
   该流提供了打印方法,可以将各种数据类型的数据都原样打印


   字节流打印
   PrintStream
   构造函数可以接收的参数类型:
   1,file对象     File
   2,字符串路径   String
   3,字节输出流   OutputStream


   字符流打印
   PrintWriter
   构造函数可以接收的参数类型:
   1,file对象     File
   2,字符串路径   String
   3,字节输出流   OutputStream
   4,字符输出流   Writer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值