学习笔记-基础知识10-IO流(1)

1 篇文章 0 订阅
1 篇文章 0 订阅

IO流(1)

1.IO的概述和File方法
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中
File类在IO(java.io)包中是一个跨平台的文件操作类,所以在操作中要更多的考虑到各个操作系统的区别。
File即指文件也指文件夹。
(查询API!!!)

2.递归(Recursion)
输出一个给定目录中的全部文件的路径。只能依靠递归的操作完成,因为在一个给定的路径下有可能还是文件夹,那么如果是文件夹的话则肯定要继续列出,重复判断。
递归:就是在方法里调用自身;
在使用递归时,必须有一个明确的递归结束条件,称为递归出口。

3.文件过滤器java.io.FilenameFilter
File类里有方法:
String[] list(FilenameFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
FilenameFilter(文件过滤器):该接口里包含accept(File dir,String name)方法,该方法依次对指定File的所有子目录,子文件夹进行迭代。
dir - 被找到的文件所在的目录。
name - 文件的名称。
当且仅当该名称应该包含在文件列表中时返回true;否则返回false

4.流
在程序中所有的数据都是以流的方法进行传输和保存的。
Java的IO是实现输入和输出的基础。
Java把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入输出功能。
程序需要数据–> 读进来–> 输入
程序保存数据–> 写出去–> 输出
在储存数据的时候是把数据写出去,这时候数据就储存在了文件里面,
在需要调用数据的时候就把数据读进来,这样数据就又到了程序中!

流的分类:
    从不同角度分类:
        按流动方向的不同可以分为输入流和输出流;
        按处理数据的单位不同分为字节流和字符流;
        按功能的不同可分为节点流和处理流;
            节点流:直接操作目标设备,例如:磁盘或一块内存区域。
            处理流:通过操作节点流,从而间接完成输入或输出功能的流。处理流是的存在是建立在一个已经存在的输入流或输出流的基础之上的。

5.操作流的步骤
使用File 类找到一个文件对象,得到IO 操作的源或目标
通过字节流或字符流的子类创建对象,(得到IO 操作的通道)
进行读或写的操作,(IO 操作)
关闭输入/输出,(打完收工,注意节约资源,关掉)

好处:
    1.有效提高了CPU 的使用率;
    2.write方法并没有马上真正写入到外部设备,我们还有机会回滚部分写入的数据;

6.字节流和字符流
二者仅仅是操作单位不一样。
处理字符或字符串时使用字符流,处理字节或二进制对象时应使用字节流;
字节流
字节流主要是操作byte(字节)的类型数据:
字节输出流:OutputStream;字节输入流:InputStream
字符流
Java中的字符是Unicode编码,1 个字符等于2 个字节;
字符流主要是操作char的类型数据:
字符输出流:Writer;字符输入流:Reader
字节流和字符流的区别:
a.在进行字符流操作的时候会使用到缓冲区(内存中),而字节流操作的时候是不会使用到缓冲区的。
字节流:程序→ 文件
字符流:程序→ 缓冲区(内存中) → 文件
b.在输出的时候,OutputStream类即使最后没有关闭内容也可以输出。
但是如果是Writer的话,如果不关闭,最后一条内容是无法输出的,因为所有的内容都是保存在了缓冲区之中,每当调用了close()方法就意味着清空缓冲区了。
若想要字符流即使不关闭也可以完成输出的话,则必须强制性清空缓冲区:
方法:public void flush() throws IOException

两者相比,使用字节流更加的方便,而且在程序中像图片、MP3 等都是采用字节的方式的保存
但是如果要是想操作中文的话,字符流肯定是最好使的。(字节流的话可能会出现乱码(一个汉字分成了两份)!)

7.字节→字符转换流
OutputStreamWriter:把字节输出流对象转成字符输出流对象
InputStreamReader:把字节输入流对象转成字符输入流对象
FileWriter和FileReader分别是OutputStreamWriter和InputStreamReader的直接子类,
而不是Writer和Reader的直接子类,区别于FileInputStream 和InputStream。

8.自动关闭资源的try语句
Java7简化资源清理(try-with-resources)自动关闭资源的try语句
自动关闭资源格式:
try( )//此处多了圆括号,()圆括号内写打开资源的代码,在这里创建的对象必须实现
Autocloseable 接口
{
IO 操作
}
catch()
{
处理异常的代码
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值