文件
-
文件就是保存数据的地方
-
文件流:文件在程序中是以流的形式来操作的
-
流:数据在数据源(文件)和程序(内存)之间经历的路径
-
输入流:数据从数据源(文件)到程序(内存)的路径
-
输出流:数据从程序(内存)到数据源(文件)的路径
-
文件的常用操作:
-
创建文件对象相关构造器和方法
-
相关方法:
- new File(String pathname) //根据路径构建一个File对象
- new File(File patent, String child) //根据父目录文件+之路径构建
- new File(String patent, String child) //根据父目录文件+之路径构建
- createNewFile 创建新文件
-
获取文件的相关信息
- getName、getAbsolutePath(绝对路径)、getParent、length(大小,返回字节)、exists、isFile、isDirectory
-
目录的操作和文件删除
- mkdir创建一级目录、mkdirs创建多级目录、delete删除空目录或文件
- 在java编程中,目录也被当做文件
-
IO流原理及流的分类
-
java IO流原理
- I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等
- java程序中,对于数据的输入/输出操作以“流(stream)”的方式进行
- java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据
- 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
- 输出output:将程序(内存)数据输出的磁盘、光盘等存储设备中
-
流的分类
-
按操作数据单位不同分为:字节流(8bit)(二进制文件),字符流(按字符)(文本文件)
-
按数据流的流向不同分为:输入流,输出流
-
按流的角色不同分为:节点流,处理流/包装流
-
(抽象基类) 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer - java的IO流共涉及40多个类,都是如上4个抽象基类派生的
- 由这四个类派生出来的子类名称都是以其父类作为子类名后缀
-
IO流体系图
-
InputStream
- 字节输入流常用子类
- FileInputStream:文件输入流 demo01
- 创建FileInputStream 对象,用于读取文件
- 选择读取方法 read() 单个字节、字节数组
- 关闭文件流,释放资源 注意异常
- BufferedInputStream:缓冲字节输入流
- ObjectInputStream:对象字节输入流
- FileInputStream:文件输入流 demo01
OutputStream
- 字节输出流常用子类
- FileOutputStream:文件输出流 demo01
- 创建FileOutputStream 对象,用于写入文件,注意创建的方式不同,写入内容的方式也会不同(追加,覆盖)
- 选择写入方法 write() 单个字节、字节数组 、字节数组选择范围 // str.getBytes() 可以把字符串——>字节数组
- 关闭文件流,释放资源 注意异常
- FileOutputStream:文件输出流 demo01
Reader
- 字符输入流常用子类
- InputStreamReader——>FileReader
- FileReader相关方法:
- new FileReader(File/String)
- read:每次读取一个字符,返回该字符,读到文件末尾返回-1
- read(char[]):批量读取多个字符到数组
- new String(char[]):将char[]转换成String
- new String(char[],off,len):将char[]的指定部分转换成String
Writer
- 字符输出流常用子类
- OutputStreamWriter——>FileWriter
- FileWriter相关方法:
- new FileWriter(File/String):覆盖模式,相当于流的指针在首端
- new FileWriter(File/String,true):追加模式,相当于流的指针在尾端
- Writer(int):写入单个字符
- Writer(char[]):写入指定数组
- Writer(char[],off,len):写入指定数组的指定部分
- Write(String):写入整个字符串
- Write(String,off,len):写入字符串指定部分
- String类:toCharArray:将String转换成char[]
- 注意:FileWriter使用后,必须关闭(close)或刷新(flush),否则写入不到指定的文件
节点流和处理流
- 节点流
- 节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter
- 处理流
- 处理流(也叫包装流)是”连接“在已存在的流(节点流或处理流)之上,为程序提供更大的读写功能,如BufferedReader、BufferedWriter
3.
- 处理流(也叫包装流)是”连接“在已存在的流(节点流或处理流)之上,为程序提供更大的读写功能,如BufferedReader、BufferedWriter
4.
- 节点流和处理流的区别与联系
- 节点流是底层流/低级流,直接跟数据源相接
- 处理流包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出
- 包装,使用修饰器设计模式,不会直接与数据源相连 [模拟修饰器设计模式]
- 处理流的功能:
- 性能的提高:主要以增加缓冲的方式来提高输入输出的效率
- 操作的便捷:提供了一系列便捷方法来一次输入输出大批数据
- 不全,Day12将补充