首页 > 其他 > 详细

IO流

时间:2020-06-11 18:59:04      阅读:50      评论:0      收藏:0      [点我收藏+]

之前我们建立一个文件的时候可以使用File类来创建,但是文件或者目录创建完毕之后怎么对其中的内容进行修改呢?这个时候就要使用流来进行文件内容的操作

 

Java IO流的原理

IO流就是为了让文件内部与程序交互的

IO流分为输入流和输出流

输入(Input)

输入input:读取外部数据(磁 盘、光盘等存储设备的数据)到 程序(内存)中。

输出(output)

输出output:将程序(内存) 数据输出到磁盘、光盘等存储设 备中。

技术分享图片

 

 

 

何为输入输出:

输入输出要看站在谁的角度 ,要是站在内存/程序的角度 站在程序/内存的角度看是写入数据还是读取数据
当网络或者文件向程序/内存中写入数据就是input(输入)
当外部的网络或者文件向程序/内存中读取数据就是output(输出)


流的分类
?按操作数据单位不同分为:字节流(8 bit),字符流(16 bit) 
?按数据流的流向不同分为:输入流,输出流 
?按流的角色的不同分为:节点流,处理流


一: 流的分类
1: 操作数据单位: 字节流 字符流
2: 数据的流向 :输入流 输出流
3: 流的角色: 节点流,处理流
 

技术分享图片

 

 

流处理的选择

非文本的: 图片或者语音等按照字节流处理(字节流是底层0101)
文本的: 按照字符处理(char:a b c )

本身的底层有节点流(字节流或者字符流)处理数据的时候可以在其外部包裹一层处理流来加速其传输

 

技术分享图片

 

 

流的体系结构

技术分享图片

 

 


体系结构
    抽象基类            节点流(或文件流)                       缓冲流(处理流的一种)
    InputStream         FileInputStream                         BufferedInputStream

    OutputStream        FileOutputStream                        BufferedOutputStream

    Reader              FileReader                              BufferedReader

    Writer              FileWriter                              BufferedWriter

 


流的创建与使用


流创建的步骤

1: 创建File对象,需要创建File对象来指定要操作的文件
2:   创建流,把要操作的文件提供给具体的流
3: 文件数据的操作,使用流对具体的文件内容中的数据进行输入输出的操作
4: 流的关闭,虽然Java本身有垃圾回收机制,但是对于物理连接,如:数据库连接,输入输出流,Scocket连接时无法回收关闭的



eg:
Read的操作
File的实例化确保文件存在
FileReader流的实例化
读入的操作
流资源的关闭


Writer
1: 提供File类的修对象,指明写出到的文件(确定要出书的文件)
2: 提供具体的流操作对象,并将要操作的文件给流对象
3: 数据的输出
4: 流的关闭

 

流在具体操作文件的注意点:
说明点:
    Read:
         1: read()的理解:返回读入的一个字符,如果达到文件末尾就会返回-1
         2:异常的处理:
                 为了保证流资源一定要关闭 ,要使用try{}catch{}finally{}
                 在抛出异常的时候尽量不要用throw因为在中间执行流的操作还没有关闭流的时候报错,那么就会造成内存的溢出之类的,所以要用try{}catch{}finally{}

         3: 读入的文件一定要存在,否则就会报:FileNotFoundException



    Write:
         1:如果写出的操作文件不存在不会报错,并不会报异常
         2:
            File对应的硬盘文件不存在,在输出的过程中会自动创建此文件
            File对应的文件存在:
                    如果流使用的构造器:FileWriter(file,false)/FileWriter(file)是对原有文件的覆盖
                    如果流使用的构造器:FileWriter(file,true)/FileWriter(file)不是对原有文件覆盖,而是对原有文件的追加

 











.





IO流

原文:https://www.cnblogs.com/zhaoyunlong/p/13094995.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!