java的io处理

十一、i/o处理(Java.io.*包)

1、基本概念

以前常用的输出有System.out.pint() PrintWriter
输入有Scanner
Stream流:二进制流,所有的流使用完都需要用close()关闭其中输出流还要用 flush()清空

  • 字节型的文件(word属于字节型文件)

    InputStream 输入流 字节流 节点流
    OutputSteam 输出流 字节流 节点流
    BufferedInputStream 输入流 字节流 处理流
    BufferedOutputSteam 输出流 字节流 处理流

  • 文本型的文件(用txt打不开的)

    Reader 输入流 字符流 节点流
    Writer 输出流 字符流 节点流
    BufferedReader 输入流 字符流 处理流
    BufferedWriter 输入流 字符流 处理流

  • 其他文件:

    对象流 Object Input Stream与Object Output Stream:
    数据流 DataInput Stream与DataOutput Stream

分类:
按方向分类:输入流(向内存中输入),输出流(从内存中向外输出)
按数据单位分类:字节流(1个bit),字符流(2个字节)
按功能分类:节点流(input stream等),处理流(缓冲流)

处理流必须建立在节点流的基础之上

2、file类:可以对文件本身属性操作的类(文件或目录的路径的抽象表示)

1、例如:file file = new file(“路径”);//一个反斜杠表示转义,在表示路径时必须用双反斜杠
2、常用方法:
序号返回值方法描述
1Booleanexists()测试此抽象路径名表示的文件或目录是否存在。
2StringgetName()返回由此抽象路径名表示的文件或目录的名称。
3BooleanisDirectory()测试此抽象路径名表示的文件是否为目录。
4BooleancanRead()测试应用程序是否可以读取由此抽象路径名表示的文件。
5BooleancanWrite()测试应用程序是否可以修改由此抽象路径名表示的文件。
6Booleanmkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。(重复执行会覆盖目录不会报错,但是返回值是false)
7Booleandelete()删除由此抽象路径名表示的文件或目录(先找到当前目录的父级,然后删除父级目录下的所有子类)。

3、字节流:处理二进制文件

1、input stream:抽象类,一般使用子类FileInputStream

一般用于几十K等小文件的读取

1、 构造方法:
 InputStream input = new FileInputStream(“路径或者file”);

如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException ,所以需要强制捕获异常。

2、 常用方法:(效率越来越高)
序号返回值方法描述
1Intread()从该输入流读取一个字节的数据。
2Intread(byte[] b)从该输入流读取最多 b个字节的数据为字节数组。b一般小于1024个字节

解释:1、public int read() throws IOException
1、从该输入流读取一个字节的数据。 如果没有输入可用,此方法将停止。
2、结果 :返回数据的下一个字节,如果达到文件的末尾, 则返回-1 。
3、异常:IOException - 如果发生I / O错误

2、OutputSteam抽象类,一般使用子类FileOutputStream
1、构造方法:

OnputStream input = new FileOutputStream(“路径”);//自动新建所需要存放数据的文件

2、常用方法:(效率越来越高)
序号返回值方法描述
1Voidwrite(int b)将指定的字节写入此文件输出流。
2Voidwrite(byte[] b)将 b个字节从指定的字节数组写入此文件输出流,b一般小于1024个字节
3、BufferedInputStream:缓冲流(处理流的一种),提高了读取速率(用于大文件的读取)
1、处理流必须建立在节点流的基础上,用于几十兆等大文件的读取
2、原理:在需要读取的两个文件之间新建一个缓冲区
3、构造方法:
       BufferedInputStream是一个普通类,直接new实例化、
       BufferedInputStream bis = new BufferedInputStream(InputStream的对象)
4、常用方法
序号返回值方法描述
1Intread(byte[] b)从该输入流读取最多 b个字节的数据为字节数组。b一般大于1k小于4k个字节
4、BufferedOutputStream:类比BufferedInputStream
构造方法:

BufferedOutputStream bos = new BufferedOutputStream(output stream的对象);

常用方法:
序号返回值方法描述
1Voidflush (int b)清空缓冲区
2Voidwrite(byte[] b)将 b个字节从指定的字节数组写入此文件输出流,b一般大于1k小于4k个字节

4、字符流:处理文本文件

1、Reader:读文件的抽象类,其子类有 FileReader
1、 构造方法:

Reader reader = new FileReader (“路径或者file”);
如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException ,所以需要强制捕获异常。

2、 常用方法:与inputstream一样
2、Writer:写文件的抽象类,其子类有FileWriter
1、 构造方法:

Writer writer = new FileWriter (“路径或者file”);
如果命名文件不存在,则是一个目录而不是常规文件,或者由于某些其他原因无法打开读取,因此抛出一个FileNotFoundException ,所以需要强制捕获异常。

2、 常用方法:与Outputstream一样
3、BufferedReader:处理流,普通类
构造方法:

BufferedReader reader =new BufferedReader();

常用方法
序号返回值方法描述
1intread()读一个字符
2StringreadLine()读一行文字。
4、BufferedWriter:
构造方法:

BufferedWriter write=new BufferedWriter();

常用方法:
序号返回值方法描述
1Voidflush (int b)清空缓冲区
2Voidwrite(int c)写一个字符;当c为line时,是写一行字符的ascall;可以强转为char类型
3VoidnewLine()当输出一行后换行
5、对象流(处理流)了解就可以

1、对象的钝化处理:将内存中的临时对象,以文件的形式永久保存在磁盘中
2、Serializable接口:使其子类型能够可序列化。 即可以产生二进制文件
3、Object Input Stream与Object Output Stream:普通类可直接实例化
一般用于分布式程序,即一个程序需要多台设备协同处理

6、数据流:(处理流)了解就可以

读写Java基本数据类型的数据(将Java中的变量以文件的形式存储)
1、、DataInput Stream与DataOutput Stream

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值