IO流以及File类

File类:(不属于流,它只是进行对文件的操作,并不没有进行对数据的操作)

File类:它是文件和目录路径名的抽象表示;文件和目录是可以通过File封装对象的;对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的。

File类的作用:一个File对象而可以代表一个文件或目录;File可以实现获取文件和目录属性等功能;可以实现对文件和目录的创建,删除等功能。

路径:

相对路径:必须使用取自其他路径名的信息解释。例如:myFile\\java.txt,它其实是在和同一IDEA的模块的同一位置。

绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\\itcast\\java.txt。

IO:输入/输出(Input/Output),从硬盘到内存的过程叫输入(读数据),从内存到硬盘的过程叫输出(写数据)

什么是流:是一种抽象概念,是对数据传输的总称。也就是说数据再设备间的传输称为流,流的本质是数据传输。

IO流的作用:IO流就是用来处理设备间数据传输问题的(常见应用:文件复制,文件上传,文件下载)

IO流的分类:

按照数据的流向:

输入流:读数据。

输出流:写数据。

按照数据类型来分:

字节流:字节输入流;字节输出流。

字符流:字符输入流;字符输出流。

使用情况:如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流;否则使用字节流。如果不知道该使用那种类型的流,就使用字节流(万能流)。

字节流:

字节流抽象基类:

1.InputStream:这个抽象类是表示字节输入流的所有类的超类。

2.OutputStream:这个抽象类是表示字节输出流的所有类的超类。

两个都是继承于Object。

子类名特点:子类名称都是以其父类名为子类名的后缀。

字节流总结:

 

字符流:

为什么出现字符流:

 一个汉字的存储:如果时GBK编码,占用2个字节;如果是UTF-8编码,占用3个字节。

由于字节流操作中文不是特别方便,所以JAVA就提供了字符流(字符流=字节流+编码表)。

用字节复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别是中文呢----汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数。

字符流抽象基类:

Reader:字符输入流的抽象类。

Winter:字符输出流的抽象类。

转换流:

OutputStreamWriter类: 将字节输出流变为字符输出流。

InputStreamReader类 : 将字节输入流变为字符输入流。

字符流小结:

 

 

注意:

便捷类(便捷类是不能做到解码和编码的过程,只能使用到默认的UTF-8;但是还是可以用到父类的读写的代码;要实现解码编码就要使用他们对应的父类):FileReader;FileWriter。

字符流与字节流的区别以及使用场景:

区别:

1.字节流操作的基本单元是字节;字符流操作的基本单元是字符。

2.字节流默认不使用缓冲区;字符流使用缓冲区。

3.字节流通常用于处理二进制数据,不支持直接读写字符;字符流通常用于处理文本数据。

4.在读写文件需要对文本内容进行处理:按行处理、比较特定字符的时候一般会选择字符流;仅仅读写文件,不处理内容,一般选择字节流。

应用场景:

字节流比较万能,能处理文本、音频、图片。

字符流运用于文本,但是如果文本中的中文比较多,字符流会比字节流便捷,处理文本多用字符流。

注意:所有是IO流相关的操作,最后都要释放资源。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值