文件操作

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文件过滤

可以提供给

​ String[] list(FilenameFilter filter);​

​ File[] listFiles(FilenameFilter filter);​

/** * 文件名过滤器接口 */ interface FilenameFilter{ /** * 文件名过滤器要求方法中参数指定文件夹File对象,第二个是文件名 * @param dir File 对象,目标进行文件列表操作的文件夹 File 对象 * @param name 指定文件夹下的子文件或者子文件夹名称 */ boolean accept(File dir,String name); }

IO流

2.1概述

输入输出是相对于具体参照物而言的

2.2 IO流分类

  • 流向划分
  • 输入流
  • 输出流
  • 处理数据单位
  • 字节流
    ​ 用于文件操作,上传或下载,适用于所有类型文件
    字节输入流、字节输出流
  • 字符流
    ​ 只能操作普通可视化文本文件,且收到编码集约束
    可分类为:
    字符输入流、字节输出流

2.3 文件操作-字节输入流

读到结尾,以上所有方法的返回值都是-1

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计数结束,返回值是读取到数组中的字节个数

2.4 文件操作-字节输出流

  • FileOutputStream文件操作字节输出流,对文件的内容写入默认采用删除写。开启追加写需要用append为true来约束
  • FileOutputStream有创建文件的能力,不存在则创建,【前提】路径合法,文件夹有操作权限

写入方法:

FileOutputStream(String filePath); //根据指定的文件路径,创建对应文件的文件操作字节输出流对象 FileOutputStream(File file); //根据指定的文件File对象,创建对应当前文件的文件操作字节输出流对象 FileOutputStream(String filePath,boolean append); //根据指定的文件路径,创建对应当前文件的文件操作字节输出流对象,append用于控制当前文件内容写入采取的是追加写还是删除写 FileOutputStream(File file,boolean append); //根据指定文件的File对象,创建对应当前文件的文件操作字节输出流对象,append用于控制当前文件内容写入采取的是追加写还是删除写void write(int b); //写入一个字节数据到文件中 void write(byte[] buffer); //写入一个字节数组数据到文件中 void write(byte[] buffer,int offset,int length); //写入一个字节数组,从指定offset下标开始,写入length个字节数到文件中

2.5字节流拷贝文件思路

字节流可以处理任何文件

需求:复制一个MP4文件到另外一个目录下

流程:

  1. 明确原文件路径
  2. 明确目标文件路径
  3. 创建FileInputStream文件操作字节输入流对象,将文件内容读取到内存中
  4. 创建FileOutputStream文件操作字节输出流对象,将内存中的文件内容输出到目标路径下,如果对应文件不存在,自动创建。
  5. 关闭资源

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字符输出流默认采用删除写
  • FileWriter有文件创建的能力,【前提】路径合法,文件夹有操作权限

写入操作方法

FileWriter(String filePath); //根据指定文件的File对象,创建对应文件的文件操作字符输出流对象 FileWriter(File file); //根据指定文件的File对象,创建对应文件的文件操作字符输出流对象 FileWriter(String filepath,boolean append); //根据指定的文件路径,创建对应的文件操作字符输出流对象,append用于控制当前文件采取的是追加写还是删除写 FileWriter(File file,boolean append); //根据指定文件File对象,创建对应文件的文件操作字符输出流对象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);