> 文档中心 > Java基础篇IO流的总结

Java基础篇IO流的总结

CSDN话题挑战赛第1期
活动详情地址:链接传送门
参赛话题:Java学习记录
话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决

说明:

本篇文章记录了File类,流的分类,以及节点流和处理流中的缓冲流的介绍,关于剩下内容由下一篇博文分享。

IO流目录总结

  • 1. File类的使用
    • 1.1 File的概念描述
    • 1.2 File的构造器及常用方法
    • 1.3 File的创建及常用方法
  • 2. IO流原理及流的分类
    • 2.1 IO流原理概述
    • 2.2 流的分类
    • 2.3 文件的节点流和处理流

1. File类的使用

1.1 File的概念描述

个人理解

File类:给我们的第一印象就是文件,它可以实现对文件的基本操作。File类的基本操作只是包含了新建、删除、重命名文件和目录、创建、删除,当然对于新建只是内存层面的,也就是说再物理机上并真实存在,它随着执行结束也就消失了,创建可以在硬盘上真实的存在一个File但是如果需要访问文件内容本身,则需要使用输入/输出流。

官方理解

① java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
② File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
③想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录
④ File对象可以作为参数传递给流的构造器

1.2 File的构造器及常用方法

构造器①

public File(String pathname){}

相对路劲和绝对路径说明
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始

说明

pathname 可以是相对路径或者是绝对路径,相对路径会存储在当前的moudle下,结对路径会存储在指定的位置

创建代码展示

//相对路径 File file1 = new File("hello.txt");//相对于当前moudle //绝对路径 File file2 = new File("C:\\Users\\Administrator\\Desktop\\com.java.li\\src\\day16\\he.txt"); System.out.println(file1); System.out.println(file2);

构造器②
格式:

File(String parentPath,String childPath){}

说明:
以parent为父路径,child为子路径创建File对象

使用展示

File file3 = new File("C:\\Users\\Administrator\\Desktop\\com.java.li\\src\\day16", "java111"); System.out.println(file3);

构造器③

public File(File parent,String child){}

说明:
根据一个父File对象和子文件路径创建File对象

使用展示

File file4 = new File(file3, "hi.txt"); System.out.println(file3);

常用方法

方法名 说明
String getAbsolutePath() 判断是否是文件目录
boolean isFile() 判断是否是文件
boolean exists() 判断是否存在
boolean canRead() 判断是否可读
boolean canWrite() 判断是否可写
boolean isHidden() 判断是否隐藏
String[] list() 获取指定目录下的所有文件或者文件目录的名称数组
File[] listFiles() 获取指定目录下的所有文件或者文件目录的File数组

常用方法使用

File file1 = new File("hello.txt");System.out.println(file1.getAbsoluteFile());//获取绝对路径 System.out.println(file1.getPath());//获取路径 System.out.println(file1.getName());//获取名称 System.out.println(file1.getParent());//获取上层目录文件 System.out.println(file1.length());//获取文件长度 System.out.println(new Date(file1.lastModified()));//获取最后一次修改的时间

1.3 File的创建及常用方法

(1)文件的创建
①使用createNewFile() 若文件存在,则不创建,返回false

(2)目录的创建
②mkdir() 如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。总之,只有创建目录的上级目录存在的条件下,才会创建目录。

③ mkdirs() 如果上层文件目录不存在,一并创建

(3)文件或者目录的删除

说明:
删除目录的时候,此目录里面不能有内容,否则删除失败
delete():删除文件或者文件夹

获取指定目录下的所有文件展示

 @Test    public void test3() { File file1 = new File("C:\\Users\\Administrator\\Desktop\\com.java.li\\src"); //显示当前文件目录下的文件名信息(显示信息并不完整) String[] list = file1.list(); for (String s : list){     System.out.println(s); } //显示当前文件目录写的个文件的具体信息 File[] files = file1.listFiles(); for (File f : files){     System.out.println(f); }    }

Java基础篇IO流的总结

2. IO流原理及流的分类

2.1 IO流原理概述

说明

①I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。
②Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。
③java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

总结:

输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中。
我们对于文件的输入和输出是站在内存的角度来操作的。

2.2 流的分类

①按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)

字节流用来处理:图片、视频…等非文本(.jpg, .mp3, .mp4, .avi, .doc, ,ppt)
字符流用来处理:文本(.txt, .java, .c, .cpp)

②按数据流的流向不同分为:输入流,输出流

③按流的角色的不同分为:节点流,处理流

Java基础篇IO流的总结
上图为最基本的四个类,在使用的过程中,不会使用,但是所有的都是基于上面的需要牢记,他是其他流的后缀

图示形式理解
Java基础篇IO流的总结

流的体系(浅蓝色需要记忆康师傅说的)
Java基础篇IO流的总结

2.3 文件的节点流和处理流

①节点流:直接从数据源或目的地读写数据
(1)FileInputStream (2)FileOutputStream
(3)FileReader (4)FileWriter

②处理流:不直接连接到数据源或目的地,而是**“连接”在已存在的流**(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
(1)BufferedInputStream (2)BufferedOutputStream
(3)BufferedReader (4)BufferedWriter

十分重要】在对资源流的使用过程一般都是分四步:

①创建File类的文件,提供读入数据的对象
②创建流的对象
③实现对数据的操作
④流资源的关闭

由于字数要求,在这里我把通过FileInputStream、、FileOutputStream、FileReader、FileWriter以及处理流的一种实现对图片、文本、视频的复制放在下一篇文章

闲鱼礼物网