一 、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. 文件复制