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); } }
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)
②按数据流的流向不同分为:输入流,输出流
③按流的角色的不同分为:节点流,处理流
上图为最基本的四个类,在使用的过程中,不会使用,但是所有的都是基于上面的需要牢记,他是其他流的后缀
图示形式理解:
流的体系(浅蓝色需要记忆康师傅说的)
2.3 文件的节点流和处理流
①节点流:直接从数据源或目的地读写数据
(1)FileInputStream (2)FileOutputStream
(3)FileReader (4)FileWriter②处理流:不直接连接到数据源或目的地,而是**“连接”在已存在的流**(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
(1)BufferedInputStream (2)BufferedOutputStream
(3)BufferedReader (4)BufferedWriter
【十分重要】在对资源流的使用过程一般都是分四步:
①创建File类的文件,提供读入数据的对象
②创建流的对象
③实现对数据的操作
④流资源的关闭
由于字数要求,在这里我把通过FileInputStream、、FileOutputStream、FileReader、FileWriter以及处理流的一种实现对图片、文本、视频的复制放在下一篇文章