IO流概述和File类的使用——基本使用

IO流概述

IO流就是从一个位置到另一个位置的用来传输数据的虚拟管道,分为读取操作(Input Read)和写入操作(Output Write),一般指的就是外部设备和内存之间的关系。
流程图

IO流的分类

按照流向分为:输入流和输出流

输入流:表示将数据读取到java程序(内存)中使用的流。

输出流:表示从java程序(内存)向外传输使用的流。

按照处理数据单位:字节流和字符流

字节流:按照二进制编码格式,一次性传输一个字节数据,将数据以字节(1byte = 8bit)的形式传输。

字符流(字符流 = 字节流 + 解码):一次性传输一个字符数据,将数据以字符的形式传输。属于一种包装过的字节流,即文件的读取或者写入操作仍然是按照字节流的方式来处理,但是在处理之前会根据【字符集】做一个解码操作。

按照功能:节点流和处理流

节点流:可以从或向一个特定的地方(节点)读写字节数据,直接与数据源相连,用于输入或者输出。

处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,在节点流的基础上对之进行加工,进行一些功能的扩展,处理流的构造器必须要传入节点流的子类。

IO流常用的流处理类

在这里插入图片描述

File类的使用

File类常用构造方法

//根据文件路径pathName创建对应的File类对象,这个路径可以是【相对路径】,也可以是【绝对路径】
File(String pathName);
File file = new File("D:/aaa/123.txt");

//根据文件的父路径名parent,以及当前路径下的一个子文件或者子文件夹名,创建File类对象
File(String parent, String child);
File file = new File("D:/aaa", "123.txt");

//根据提供的父目录File类对象,以及当前目录下的一个子文件或子文件夹创建File类对象
File(File parent, String child);
File file = new File(file, "123.txt");

pathName路径的书写格式一般分为三种:\\/File.separator

//从win操作系统复制的路径,开发工具会自动进行转义
File file = new File("C:\\aaa");

//系统提供的专门用于路径切割的常量,可以根据不同操作系统转变不同的分隔符,用于多平台系统的兼容开发
File file = new File("C:" + File.separator + "aaa");

//win和Linux通用的路径书写格式
File file = new File("C:/aaa");

File类常用的方法

一、创建

文件
/**
* 使用File类对象调用,创建File类对象里面保存的地址所指定的文件
* @return boolean类型,返回true表示创建成功,返回false表示创建失败
*		失败原因:
*		1.该文件已经存在
*		2.操作路径非法
*		3.当前操作的文件夹没有写入权限
*		4.硬盘坏道
* 要求:创建文件必须有文件的拓展名!!!!
*/
boolean createNewFile();

//案例:在aaa路径下创建123.txt文件
File file = new File("D:/aaa/123.txt");
file.createNewFile();
new File("D:/aaa/123.txt").createNewFile();	//匿名对象创建
文件夹
/**
* 使用File类对象调用,创建File类对象里面保存的路径所指定的文件夹
* @return boolean类型,返回true表示创建成功,返回false表示创建失败
*		失败原因:
*		1.该文件已经存在
*		2.操作路径非法
*		3.当前操作的文件夹没有写入权限
*		4.硬盘坏道
*/
boolean file.mkdir();
new File("C:/aaa/bbb").mkdir();

/**
* 使用File类对象调用,创建File类对象里面保存的路径所指定的文件夹,如果中间路径不存在一并自动创建
* @return boolean类型,返回true表示创建成功,返回false表示创建失败
*		失败原因:
*		1.该文件已经存在
*		2.当前操作的文件夹没有写入权限
*		3.硬盘坏道
*/
boolean file.mkdirs();

二、删除

/**
* 删除文件和文件夹,只能删除空文件夹,所以系统删除文件夹的过程是先删除里面的文件,清空文件夹后删除文件夹
* 这里的删除是【直接抹掉数据】,不可逆
*/
boolean delete();

/*
* 当JVM退出当前程序时,删除调用该方法的文件或者文件夹,而不是调用方法后立即删除
* 用于删除程序运行之后的缓存文件或者运行日志,节约磁盘空间
*/
void deleteOnExit();

三、重命名和剪切移动

重命名和剪切移动都可以通过renameTo()方法实现

//方法
boolean srcFile.renameTo(File dest);

//重命名案例
File srcFile = new File("C:/aaa/123.txt");
File destFile = new File("C:/aaa/456.txt");
srcFile.renameTo(destFile);

//剪切移动案例
File srcFile = new File("C:/aaa/123.txt");
File destFile = new File("C:/aaa/bbb/123.txt");
srcFile.renameTo(destFile);

四、获取

文件/文件夹信息
//【以下方法都是字符串操作方法,和文件是否存在无关!!!!】
String file.getName();		//获取路径最后的文件或者文件夹名
String file.getPath();		//获取当前路径
String file.getAbsolutePath();		//获取当前路径的绝对路径
String file.getParent();	//获取当前目标文件或者文件夹的父目录

//获取文件最后修改的实际Unix时间戳,从1970年1月1日0时0分0秒到当前的秒数
long lastModified();

//文件的大小,占的字节数,如果是文件夹或者不存在,返回0L
long length();
获取文件列表
//获取当前计算机中所有盘符,针对于win系统
File[] files = File.listRoots();

//获取指定【文件夹】内的所有子文件夹和子文件【名字】的字符串,返回一个字符串数组
String[] allFilesName = file.list(FilenameFilter filter);	//文件过滤器

//获取指定【文件夹】内的所有子文件夹和子文件的File类对象【包含路径】,返回一个File类数组
File[] allFiles = file.listFiles(FilenameFilter filter);	//文件过滤器

/*
* 【文件过滤器】是FilenameFilter接口,可以自定义过滤器,提供过滤发展,输出满足true的文件列表
*/
//创建类实现接口案例
Class MyFilter implements FilenameFilter {
	@override
	//dir是文件路径,name的父路径,该方法会遍历文件和文件夹,将名字依次写入name
	//如果要判断是否为一个普通文件,需要有File类调用isFile()方法,所以必须创建匿名对象
	public boolean accept(File dir, String name) {
		return name.endsWith(".java") && new File(dir, name).isFile();
	}
}
File[] allFiles = file.listFiles(new MyFilter());	//按照过滤器筛选文件

五、判断

boolean file.canExecute();	//文件是否可执行
boolean file.canRead();		//文件是否可读取
boolean file.canWrite();	//文件是否可写入
boolean file.exists();		//是否存在
boolean file.isAbsolute();	//是否为绝对路径
boolean file.isDirectory();	//是否为文件夹
boolean file.isFile();		//是否为普通文件
boolean file.isHidden();	//是否隐藏
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值