史上最骚最全最详细的IO流教程,没有之一

前言
io流用到的地方很多,就比如上传下载,传输,设计模式等....基础打扎实了,才能玩更高端的 。
在博主认为真正懂IO流的优秀程序员每次在使用IO流之前都会明确分析如下四点:

(1)明确要操作的数据是数据源还是数据目的(也就是要读还是要写)
(2)明确要操作的设备上的数据是字节还是文本
(3)明确数据所在的具体设备
(4)明确是否需要额外功能(比如是否需要转换流、高效流等)
以上四点将会在文章告白IO流的四点明确里面小结一下,如果各位真能熟练以上四点,我觉得这篇文章你就没必要看了,因为你已经把IO玩弄与股掌之中,万物皆可被你盘也就也不再话下了 。
@
1、告白IO流的四点明确(1)明确要操作的数据是数据源还是数据目的(要读还是要写)
源:
InputStream Reader
目的:
OutputStream Writer
(2)明确要操作的设备上的数据是字节还是文本
源:
字节: InputStream
文本: Reader
目的:
字节: OutputStream
文本: Writer
(3)明确数据所在的具体设备
源设备:
硬盘:文件 File开头
内存:数组,字符串
键盘:System.in
网络:Socket
对应目的设备:
硬盘:文件 File开头
内存:数组,字符串
屏幕:System.out
网络:Socket
(4)明确是否需要额外功能
需要转换—— 转换流 InputStreamReader 、OutputStreamWriter
需要高效—— 缓冲流Bufferedxxx
多个源—— 序列流 SequenceInputStream
对象序列化—— ObjectInputStream、ObjectOutputStream
保证数据的输出形式—— 打印流PrintStream 、Printwriter
操作基本数据,保证字节原样性——DataOutputStream、DataInputStream
到这里,我们再来看看IO流的分类吧
 
史上最骚最全最详细的IO流教程,没有之一

文章插图
 
OK,准备好了告白IO流了咩?
2、File类至于IO流,也就是输入输出流,从文件出发到文件结束,至始至终都离不开文件,所以IO流还得从文件File类讲起 。
1.1 File概述
JAVA.io.File 类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作 。
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作 。
怎么理解上面两句话?其实很简单!
第一句就是说File跟流无关,File类不能对文件进行读和写也就是输入和输出!
第二句就是说File主要表示类似D:\文件目录1与D:\文件目录1\文件.txt,前者是文件夹(Directory)后者则是文件(file),而File类就是操作这两者的类 。
1.2 构造方法
在java中,一切皆是对象,File类也不例外,不论是哪个对象都应该从该对象的构造说起,所以博主来分析分析File类的构造方法 。首先从API开始着手
 
史上最骚最全最详细的IO流教程,没有之一

文章插图
 
我们主要来学习一下比较常用的三个:
1、 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 。
2、 public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例 。
3、 public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例 。
看字描述不够生动不够形象不得劲?没得事,下面进行构造举例,马上就生动形象了,代码如下:
File类的注意点:
一个File对象代表硬盘中实际存在的一个文件或者目录 。File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建 。
1.3 常用方法
File的常用方法主要分为获取功能、获取绝对路径和相对路径、判断功能、创建删除功能的方法
1.3.1 获取功能的方法
1、public String getAbsolutePath() :返回此File的绝对路径名字符串 。
2、public String getPath() :将此File转换为路径名字符串 。
3、public String getName() :返回由此File表示的文件或目录的名称 。
4、public long length() :返回由此File表示的文件的长度 。


推荐阅读