IO流、File文件操作、文件操作
文件操作
1.File类
File类是用于操作文件和文件夹的一种方式,可以针对文件和文件夹完成增删改查操作。
路径分隔符:
针对windows默认采用\作为分隔符
Linux、unix系统默认采用了/,同时Windows页支持
常用方法
File(String file); //file:文件路径,用于实例化File对象 File(String parent,String childName); //parent:父级目录,childName:子文件或子文件夹名称,用于实例化File对象 File(File parent,String childName); //parent父级目录File对象,childName:子文件夹或子文件名称,用于实例化File对象
1.1文件(文件夹创)操作
调用File对象在File对象存储的路径下创建文件
【注意】:
检查路径合法性
文件是否已经存在
是否拥有操作权限
boolean createFile(); //通过File类对象调用,创建文件 boolean mkdir(); //通过File类对象调用,创建文件夹 mkdirs() //通过File类对象调用,创建多级目录
1.2文件(文件夹)移动重命名操作
同级移动等于重命名
boolean renameTo(File dest); //通过File类对象调用,文件移动,重命名。dist目标路径
1.3文件(文件夹)删除操作
boolean delete(); //通过File类对象调用,删除文件夹或文件,要求文件夹内不能有内容,删除内容不是放入回收站,会直接抹掉 void deleteOnExit(); //通过File类对象调用,在程序退出后删除文件或文件夹,可以用于清理缓存,缓冲文件
1.4判断方法
boolean isFile(); //判断是否是普通文件 boolean isDirectory(); //判断是否是文件夹 boolean exist(); //判断文件或文件夹是否存在 boolean isAbsoulte(); //判断是否使用绝对路径 boolean isHidden(); //判断是否隐藏文件或隐藏文件夹
1.5数据获取操作
String getPath(); //获取File对象存储路径信息 String getParent(); //获取File对象存储路径的父目录 String getName(); //获取File对象存储路径信息的文件或文件夹名 long length(); //通过File对象调用,获取文件大削,如果是文件夹返回值为0L long lastModified(); //通过File对象调用,获取文件或者文件夹最后修改时间 String getAbsolutrPath(); //获取指定文件或文件夹的绝对路径 File getAbsoluteFile(); //获取指定文件或文件夹的绝对路径对应的File对象
1.6文件列表操作
public static File[] listRoot(); //只有Windows有效,可以获取所有盘符信息 String[] list(); //通过File对象调用,获取对应文件夹中所有子文件或者子文件夹的名称 File[] listFiles(); //通过File对象调用,获取对应文件夹中所有子文件夹或者子文件夹的File对象
1.7文件过滤
/** * 文件名过滤器接口 */ interface FilenameFilter{ /** * 文件名过滤器要求方法中参数指定文件夹File对象,第二个是文件名 * @param dir File 对象,目标进行文件列表操作的文件夹 File 对象 * @param name 指定文件夹下的子文件或者子文件夹名称 */ boolean accept(File dir,String name); }
可以提供给
String[] list(FilenameFilter filter);
File[] listFiles(FilenameFilter filter);
IO流
2.1概述
输入输出是相对于具体参照物而言的
2.2 IO流分类
流向划分
- 输入流
- 输出流
处理数据单位
字节流
用于文件操作,上传或下载,适用于所有类型文件
字节输入流、字节输出流
字符流
只能操作普通可视化文本文件,且收到编码集约束
可分类为:
字符输入流、字节输出流
2.3 文件操作-字节输入流
FileInputStream(String filePath); //根据指定的路径,创建对应的文件的字节码输入流对象 FileInputStream(File file); //根据指定的文件对象,创建对应的字节输入流对象 int read(); //从文件读取一个字节数据返回,返回值类型为int类型,实际有效数据为byte int read(byte[] buffer); //从文件中读取数据到byte类型的缓冲数组,返回值类型为byte类型的缓冲数组中的字节个数 int read(byte[] buffer,int offset,int length); //从文件中读取数据到byte缓冲数组中,要求从offset下标位置开始,到length计数结束,返回值是读取到数组中的字节个数
读到结尾,以上所有方法的返回值都是-1
2.4 文件操作-字节输出流
FileOutputStream(String filePath); //根据指定的文件路径,创建对应文件的文件操作字节输出流对象 FileOutputStream(File file); //根据指定的文件File对象,创建对应当前文件的文件操作字节输出流对象 FileOutputStream(String filePath,boolean append); //根据指定的文件路径,创建对应当前文件的文件操作字节输出流对象,append用于控制当前文件内容写入采取的是追加写还是删除写 FileOutputStream(File file,boolean append); //根据指定文件的File对象,创建对应当前文件的文件操作字节输出流对象,append用于控制当前文件内容写入采取的是追加写还是删除写
- FileOutputStream文件操作字节输出流,对文件的内容写入默认采用删除写。开启追加写需要用append为true来约束
- FileOutputStream有创建文件的能力,不存在则创建,【前提】路径合法,文件夹有操作权限
写入方法:
void write(int b); //写入一个字节数据到文件中 void write(byte[] buffer); //写入一个字节数组数据到文件中 void write(byte[] buffer,int offset,int length); //写入一个字节数组,从指定offset下标开始,写入length个字节数到文件中
2.5字节流拷贝文件思路
字节流可以处理任何文件
需求:复制一个MP4文件到另外一个目录下
流程:
- 明确原文件路径
- 明确目标文件路径
- 创建FileInputStream文件操作字节输入流对象,将文件内容读取到内存中
- 创建FileOutputStream文件操作字节输出流对象,将内存中的文件内容输出到目标路径下,如果对应文件不存在,自动创建。
- 关闭资源
2.6文件操作字符输入流
FileReader(String filepath); //根据指定的文件路径,创建对应文件的文件操作字符输入流对象 FileReader(File file); //根据指定的File对象,创建对应的文件操作字符输入流对象 读取操作方法 int read(); int read(char[] buffer); int read(char[] buffer,int offset,int length);
2.7文件操作字符输出流
FileWriter(String filePath); //根据指定文件的File对象,创建对应文件的文件操作字符输出流对象 FileWriter(File file); //根据指定文件的File对象,创建对应文件的文件操作字符输出流对象 FileWriter(String filepath,boolean append); //根据指定的文件路径,创建对应的文件操作字符输出流对象,append用于控制当前文件采取的是追加写还是删除写 FileWriter(File file,boolean append); //根据指定文件File对象,创建对应文件的文件操作字符输出流对象
- FileWriter字符输出流默认采用删除写
- FileWriter有文件创建的能力,【前提】路径合法,文件夹有操作权限
写入操作方法
void write(int ch); void write(char[] buffer); void write(char[] buffer,int offset,int length); void write(Stirng str); void write(String str,int offset,int length);