2022-07-18 day 22

一 、File

概念:File可以代表一个目录或者一个文件,并不能代表文件的内容

文件和流的区别:File关注的是文件本身的特征,如名称、路径、修改时间、大小。

流关注的是文件的内容。

File基本的操作

1. 常见构造方法

| File(String pathname) | 建立一个以pathname为路径的File对象, pathname可以是相对路径,也可以

是绝对路径。|

| File(String parent,String child) | 建立一个以parent加上child为路径的File对象 |

| File(File parent,String child) | 建立一个以parent加上child为路径的File对象 |

注意:文件的路径如果考虑跨平台,就使用File.seperator

相对路径:javase程序中,相对参照点为项目目录 src/test.项目目录下的src/test

绝对路径:e:/test

2. 创建文件操作

mkdir:创建单层目录 dir1/dir2:必须保证dir1是存在的,才能成功创建dir2

mkdirs:创建层级目录 dir1/dir2:如果dir1不存在,会先创建dir1,再创建dir2

createNewFile:创建文件 dir1/a :必须保证dir1是存在的,否则,会报系统找不到指定的路径的异常

3. 文件的常用读操作(文件名称、文件名称)

exists() //文件或者目录是否存在

isFile() //是否是文件

isDirectory() //是否是目录

getName() //取文件或者目录的名字

getPath() //取文件或者目录的路径

getAbsolutePath() //取文件绝对路径

lastModified() //最后修改日期

length() //文件或者目录的字节大小

list()//获得当前File对象所表示目录下的文件和目录名称,返回String[]类型的数据。

listFiles()//获得当前File对象所表示目录下的文件和目录,返回File[]类型的数据。

代码实例

4. 修改文件名称

注意:修改的新文件名需要是不存在的 ,如果修改前后的目录一致,那就是重命名的效果,如果修改前后目

录不一致,相当于会删除旧目录中的文件,以新的名称出现在新目录中

5. 删除文件

6. 删除文件夹

递归:

1、自己调用自己

2、必须要一个条件

二、流的概念

File类关心的是磁盘上存储的文件位置和名称等,而流是指程序运行中的数据通信信道,当然流类所关心的是文

件的内容。

流的分类

根据流向分为:输入流,输出流

根据传输单位:字节流,字符流

根据是否和数据源可以直接交互:节点流,处理流

节点流:可以和数据源直接交互,FileInputStream,FileOutPutStream,FileWriter,FileReader

处理流:需要连接嵌套其它的流使用,BufferedReader,BufferedWriter

流的四个根类

1. InputStream(字节输入流)

FileInputStream:节点流,字节输入流,按照字节为单位读文件,文件复制

ObjectInputStream:处理流,对象输入流,需要嵌套一个字节输入流进行使用,如

FileInputStream,反序列化

2. OutputStream(字节输出流)

FileOutputStream:节点流,字节输出流,按照字节为单位写,文件复制

ObjectOutPutStream:处理流,对象输出流,需要嵌套一个字节输出流,如FileOutputStream进行

使用,序列化

3. Reader(字符输入流)

FileReader:节点流,针对文件的字符输入流,以字符为单位读文件,存在乱码问题,不能直接按行

进行读

BufferedReader:处理流,带缓冲区的字符输入流,以行为单位读文件 readLine:返回值为null表示

读取结束

InputStreamReader:处理流,转换流(可以将字节流转换为字符流),需要嵌套节点流使用,读文

件的指定字符集编码,解决乱码问题

4. Writer

FileWriter:节点流,针对文件的字符输出流,以字符为单位写文件,存在乱码问题,不能直接按行

BufferedWriter :处理流,带缓冲区的字符输出流,按照行写字符,newLine

OutPutStreamWriter:处理流,转换流(可以将字节流转换为字符流),需要嵌套节点流使用,写

文件的时候指定字符集编码,解决乱码问题

三、字节流

1. FileInputStream

常用api

FileInputStream是InputStream的子类。

FileInputStream是读取文件的字节输入流。

FileInputStream常用的构造方法:

FileInputStream(File file)

FileInputStream(String filename)

FileInputStream覆盖实现了父类如下方法:

int available()

void close()

结构:

int read():一次读取1个字节,返回值表示读取的一个字节的数据(一个字节的数据不一定表示一个字符的

编码),返回值为-1表示读取结束

2. FileOutputStream

FileOutputStream是OutputStream的子类

FileOutputStream是写入文件的字节输出流

FileOutputStream常用的构造方法:

FileOutputStream(File file)

FileOutputStream(String filename)

FileOutputStream(File file,boolean append)

FileOutputStream(String filename,boolean append)

FileOutputStream覆盖实现了父类如下方法:

void close()

void flush()

void write(int b) :写入一个字节的数据,参数就是要写入的数据的编码

void write(byte[] b) :将数组中的数据写到文件中,数组中存放的是字符的编码

void write(byte[] b,int off,int len):将数组指定位置指定长度的数据写入的文件中

结构:

3. 文件复制

你可能感兴趣的:(2022-07-18 day 22)