黑马程序员_16 IO流

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

IO流中的操作数据分为字节流和字符流

早期都是以字节流的形式操作的,字节流处理单元是一个字节,操作bytebyte[],可以操作任何形式的数据

字符流:由于对于文本数据,有不同的码表编码格式,字符流采用默认编码表,处理单元是两个字节的Unicode字符,操作charchar[]、或String

对于文本数据用字符流更有效率,对于多媒体数据用字节流更好

IO流4个基本功能类,其实现类都是以基类名为后缀,以功能为前缀

流操作的基本规律:

1:明确源和目的

源:输入流 InputStream reader

    目的:输出流 OutputStream Writer

2:操作的数据是否是纯文本

3:当体系明确后再明确要使用哪个具体对象,通过设备进行区分

源设备:内存,硬盘,键盘

    目的设备:内存,硬盘,控制台

IO流的异常,

IO流体系对象,从创建时就会发生异常,因为凡是涉及系统操作的都会出现异常,有创建就必须有关闭。

处理方式:在外面建立引用,在try内初始化。关闭的动作在finallytry处理,流对象关闭前要判断是否为空,只能每个都判断一次

字符流:

Bufferedwriter和Bufferedreader

缓冲区的出现提高流的操作效率,创建缓冲前必须先有流对象

newLine():跨平台换行符方法,只在缓冲区有效

readLine():一次读取文本的一行,方便数据的获取,当返回null时,表示读到文件末尾,不返回换行符

    其实最终都是在硬盘上一个一个读取,,最终使用的还是read()一次读取一个的方法,只是被封装了起来

read(),阻塞式方法,当没有数据读取时等待,并不释放

InputStreamReader和OutputStream

,转换流,将字节流数据转换成字符流,,和将字符流通向字节流,录入字符,转出字节

      字符流与字节流之间的桥梁,方便了字符流与字节流之间的操作


装饰设计模式:

当想要对已有对象进行功能增强时,就可以定义类,将已有对象传入,基于已有对象的功能,并提供加强功能,那么这个类就称为装饰类

装饰类通常会通过构造方法接收装饰的对象,并基于被装饰的对象的功能提供更强的功能,装饰模式比继承要灵活,避免继承体系的臃肿,降低了类和类之间的关系,所以装饰类和被装饰类通常都属于一个体系中



File类:

用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。

特点:实现了Comparable接口,自身具备比较性,具有自然顺序。File对象可以作为参数传递给流的构造函数,创建File对象时,可以将已有的或未出现的文件或文件夹封装成对象,不会创建文件或目录,但当作为参数传递给输出流时,会以输出流创建文件的方式创建,存在覆盖。

|---初始化:三种方式:

1:在当前目录下关联指定文件

File f1 = new File(“a.txt”)

2:关联指定目录,指定文件

File f2 = new File(“d:\\abc”, “b.txt”)

3:关联指定目录,在指定目录下关联指定文件

File d = new File(“d:\\abc”);

File f3 = new File(d, “c.txt”);

功能:创建、删除、判断、获取信息

  创建:

boolean createNewFile()在指定的位置创建文件,如果该文件存在,则不创建,返回false

                  mkdir()创建文件夹

                  mkdirs()创建多级文件夹

删除:

              boolean delete()删除失败返回false,如果文件正在被使用,则删除不了。

                      void deleteOnExit()在程序退出时删除指定文件,一定会删除。

判断:

              boolean exists()判断文件是否存在。

  如果为true,即可应用以下方法

              isFile()是否为文件

              isDirectory()是否为目录

              isHadden()是否为隐藏文件

              isAbsolute()是否为绝对路径。

-获取信息:

              getName获取名称

              getPath获取路径

              getAbsolute获得绝对路径,可以返回字符串或File对象

      getParent返回绝对路径的父目录,如果获取的是相对路径,返回null,如果相对路径中有上一级目录,那么这个目录就是返回父目录

特殊方法:

renameTo(File f)重命名,可以指定目录,相当与剪切+重命名

File[] listRoots()静态方法,列出当前计算机下有效的盘符。返回一个File数组.

String[] list() 列出当前目录下所有的目录和文件名称,返回一个String数组,调用此方法的File必须封装了一个目录,且该目录必须存在,

String[] list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录满足指定过滤器的文件和目录。

File[] ListFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录的文件。



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值