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文件到另外一个目录下

流程:

  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(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);
posted @ 2023-03-13 13:00  ²º²º痕迹º  阅读(41)  评论(0编辑  收藏  举报