java学习(九) —— java中的File文件操作及IO流概述

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java学习(九) —— java中的File文件操作及IO流概述脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

  1. 流是干什么的:为了永久性的保存数据。
  2. IO流用来处理设备之间的数据传输(上传和下载文件)
  3. java对数据的操作是通过流的方式。
  4. java用于操作流的对象都在IO包中。
  5. java IO系统的学习,本质上就是对文件的读写操作。

File类

  1. java中使用File来抽象一个文件,无论是普通文件还是目录,都可应对与一个File对象。
  2. File只是抽象的代表来磁盘上的某个文件或者目录,内部实际上是依赖一个平台无关的本地文件系统类。
  3. File无法对其所表示的文件内容进行任何读写操作(那是流做的事情)。
  4. 成员方法:

    1)创建功能:     【1public boolean createNewFile()     【2public boolean mkdir()     【3public boolean mkdirs() (2)删除功能:public boolean delete() (3)重命名功能:public boolean renameTo(File dest) (4)判断功能:     【1public boolean isDirectory()     【2public boolean isFile()     【3public boolean exists()     【4public boolean canRead()     【5public boolean canWrITe()     【6public boolean isHidden() (5)获取功能:     【1public String getAbsolutePath()     【2public String getPath()     【3public String getName()     【4public long length()     【5public long lastModified() (6)高级获取功能:     【1public String[] list()     【2public File[] listFiles()

流的分类

  1. 根据数据流向的不同分为输入流和输出流。
  2. 根据处理数据类型的不同分为字节流和字符流:

    (1)字符流:顾名思义,该流只能处理字符,但处理字符速度很快。 (2)字节流:可以处理所有以bit为单位存储的文件,也就是说可以处理所有的文件,但是在处理字符的速度上不如字符流。
  3. 字符流的抽象基类:

    (1)Reader:字符输入流的抽象类,所有字符输入流的实现都是它的子类 (2)Writer:字符输出流的抽象类,所有字符输出类的实现都是它的子类
  4. 字节流的抽象基类:

    (1)InputStream:字节输入流的抽象类,是所有字节输入流的父类 (2)OutputStream:字节输出流的抽象类,是输出字节流的所有类的超类
  5. 字符流Reader派生的子类:

    (1)CharArrayReader (2)BufferedReader/LineNumberReader (3)FilterReader (4)InputStreamReader/FileReader
  6. 字符流Writer派生的子类:

    (1)BufferedWriter (2)CharArrayWriter (3)FilterWriter (4)OutputStreamWriter/FileWriter (5)PRintWriter (6)StringWriter
  7. 字节流InputStream派生的子类

    1)FileinputStream (2)ObjectInputStream (3)FilterInputStream/BufferedInputStream/DatainputStream/PushbackInputStream (4)SequenceInputStream (5)ByteArrayInputStream (6)StringBufferInputStream)
  8. 字节流OutputStream派生的类:

    1)ByteArrayOutputStream (2)FileOutputStream (3)FilterOutputStream/BufferedOutputStream/DataOutputStream (4)ObjectOutputStream

优化读写:字节缓冲流

  1. 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多。这是加入了数组这样的缓冲区效果。
  2. 文件字节输入流的读取时,是直接同字节流中读取的。
  3. 由于字节流是与硬件(存储介质)进行的读取,所以速度较慢。
  4. 而cpu需要使用数据时通过read()、read(byte[])读取数据时就要受到硬件IO的慢速度限制。
  5. cpu与内存发生的读写速度比硬件IO快10倍不止,那么就可以在内存建立缓冲区优化。
  6. 优化读写的思路:

    (1)在内存中建立缓冲区 (2)先把存储介质中的字节读取到缓冲区 (3)cpu需要数据时直接从缓冲区读取 (4)缓冲区要足够大,在被读完后又触发fill()函数自动从存储介质的文件字节内容中读取字节存储到缓冲区数组。

转换流

  1. 转换流是字节流通向字符流的桥梁,可以将字节流转换为字符流。
  2. 原理就是在字节流的基础上增加了编解码的操作。
  3. 字符流 = 字节流 + 编码表
  4. FileReader、FileWriter其实底层都是字节流,只不过额外的配置一个编码器、解码器,底层用字节读数据通过解码器转换成字符,或通过编码器将字符转换为字节再输出。

脚本宝典总结

以上是脚本宝典为你收集整理的java学习(九) —— java中的File文件操作及IO流概述全部内容,希望文章能够帮你解决java学习(九) —— java中的File文件操作及IO流概述所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。