Java File类详解及IO介绍及使用

我是一个CPU:这个世界慢!死!了! ,可以感受到CPU,内存和硬盘之间的速度比较。

文件的本质

OS(操作系统)的目的就是可以让上层程序可以通过一种统一的方式去拿到无论什么磁盘里的文件(即一段字节流)。
一切文件的本质:

  • 一段字节流
    • 文本文件(txt,代码,html等)
    • 二进制文件
  • 每个程序负责解释文件中的字节流

即文件本身就是一段字节流,不管是图片、音频还是文本等等,文件的展示形式取决于用什么软件打开,例如播放器可以解析mp3文件等,但是本质上这个文件就是一段字节流。

文件和IO

程序和文件之间的双向流读取和输出,和网络连接时,从机器到远程主机上的双向的读取输出流十分相似,所以Java针对这种流抽象出了InputStream和OutputStream。

InputStream/OutputStream

  • 抽象的输入/输出流,无论是:
    • 从文件中读取字节流
    • 从网络中读取字节流
    • 从任何地方读取字节流

输入和输出都是以程序为基准来判定的

对于文件读取,永远建议使用绝对路径。

Java中的File类

  • File并不代表一个“文件”,它只代表一个“路径”
  • 抽象的“文件”路径: 可以指文件也可以指文件夹
  • File的常见方法
    isFile() isDirectory() exists() getAbsolutePath()等等
  • 绝对路径和相对路径
    相对路径相对的是JVM当前的工作目录,永远建议使用绝对路径。
  • 读写文件

NIO

  • NIO是Java7之后引入的,解释为:1.new IO 2.Non-blocking IO非阻塞的IO
  • NIO中的Path其实就是旧版的File,可以通过toFile方法进行转换
  • NIO的Files工具类,提供了walkFileTree等方法

NIO解决的问题是,对于旧版的流式读取,因为其是通过字节流的形式传输的,一个字节一个字节的进行读写,没法插队等等,速度较慢。NIO改为了按块读写,中间块和块是也是没有顺序的,是比旧版IO快的。

IO太慢的解决方法

使用BufferedReader/BufferedWriter

不用重复造轮子

FileUtils

IOutils

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是...
    wustor阅读 1,832评论 5 6
  • 1、IO介绍 在前期的学习上述知识点的过程中,我们书写的任何程序,它运行的时候都会有数据的产生,比如时间数据,而这...
    Villain丶Cc阅读 1,487评论 0 3
  • Java的IO和NIO 一、Java的IO Java的IO功能在java.io包下,包括输入、输出两种IO流,每种...
    王小冬阅读 1,019评论 0 9
  • 1 IONo18 1.1IO框架 【 IO:Input Output 在程序运行的过程中,可能需要对一些设备进...
    征程_Journey阅读 982评论 0 1
  • 五、IO流 1、IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据。(2)java中对数据的操作都是通过...
    佘大将军阅读 534评论 0 0