File对象
File的介绍
File 类 就是当前系统中 文件或者文件夹的抽象表示
通俗的讲 就是 使用File对象 来操作我们电脑系统中的文件或者文件夹
学习File类 其实就是学习 如何通过file对象 对系统中的文件/文件夹进行增删改查
1.创建file对象
File 名字 =new File(路径);
路径path即:"什么盘/什么文件/什么文件/什么文件";
路径分割符
* D:\haha\hehe\123.mp4 称之为路径 其中 \ 就是路径分割符 代表的是 下级目录
* 在windows系统中 路径分割符为 \ 在 Linux 和 Mac 中 路径分割符是 /
* 我们写的java代码 需要跨平台 多环境运行 开发环境:windows 生成环境:Linux
* 此时就会出现一个问题 如果我们的路径分隔符 写成 \ 在 windows中好使 到了 Linux就不识别
* 所以我们可以使用以下两种方式解决:
方式一:windows不仅支持\还支持/
File 名字 =new File("D:/abc/a/123.txt");
方式二:使用动态识别的常量,File.separator根据当前代码所在的系统获取相应的分隔符
File 名字=new File("D:"+File.separator+"abc"+File.separator+"a"+File.separator+"123.txt");
2.file的增加操作
我们创建了一个新的file对象并不是在电脑中已经添加了文件,在电脑中创建文件需要file的添加
一定记得要抛出错误
(1)创建相应的文件:
file对象.createNewFile();
(2)创建单层目录:
file对象.mkdir();
mkdir:make directory
(3)创建多层目录:
file对象.mkdirs()
根据你调用的方法不同会创建不同类型的文件
File file01=new File("D:/Lianxi/hello.text");
file01.createNewFile();//创建文件
File file02=new File("D:/Lianxi/aaa");
file02.mkdir();//创建单层目录
File file03=new File("D:/Lianxi/A1/A2");
file03.mkdirs();//创建多层目录
3.file的删除操作
(1)删除文件:
file对象名字.delete();
(2)延迟删除(休眠删除)
file对象名字.deleteOnExit();//当程序退出后 删除
Thread.sleep(毫秒);
记得要抛出异常不然sleep会报错
(3)删除空目录
file对象.delete();
删除目录的前提一定是目录下没有文件即该目录为空目录;
File file04=new File("D:/Lianxi/eee");
//删除指定的文件
file04.delete();
File file05=new File("D:/Lianxi/hello.text");
//延迟删除文件也可以叫做休眠删除文件
file04.deleteOnExit();//程序退出后删除
//多少毫秒后删除
Thread.sleep(5000);
File file06=new File("D:/Lianxi/A1/A2");
//删除目录文件前提是空目录
file06.delete();
4.file的修改操作
(1)设置该文件的权限为不能读:
file对象.setRedadable(false);
(2)设置该文件的全选为不能写:
file对象.setWritable(false);
(3)设置文件为只读权限:
file对象.setReadOnly()
(4)重命名(剪切)
file对象.renameTo(new File(你要修改的路径));
//创建一个file对象
File file01=new File("D:/Lianxi/123.txt");
//对原始文件进行重命名
file01.renameTo(new File("D:/Lianxi/456.txt"));
File file02=new File("D:/Lianxi/456.txt");
//修改路径
file01.renameTo(new File("D:/Lianxi/A1/A2/789.txt"));
5.file的查询操作
(1)得到当前文件的名称
file对象.getName();
(2)得到父级路径的名称
file对象.getParent();
(3)得到文件的路径名称:
file对象.Path();
(4)判断该对象文件是否为文件类型:
file对象.isFile();
如果是返回true否则返回false;
(5)判断该文件对象是否为目录类型
file对象.isDirectory();
如果是文件目录类型返回true否则返回false;
File file=new File("D:/Lianxi/A1/A2/789.txt");
//获取当前文件的文件名
String str1=file.getName();
// System.out.println("文件名为:"+str1);
//获取当前文件的父级路径
String str2=file.getParent();
//System.out.println("文件的父级路径为:"+str2);
//获取文件的路径
String str3=file.getPath();
System.out.println("文件的路径为:"+str3);
//判断是否为文件类型
boolean b1=file.isFile();
System.out.println(b1);
//判断该文件是否为文件目录类型
boolean b2=file.isDirectory();
System.out.println(b2);
面试题:显示指定目录下的所有文件
用方法的递归调用
public static void main(String[] args) {
showFile("D:/Lianxi");
}
public static void showFile(String path){
//1.创建一个文件对象把路径参数传入
File file01=new File(path);
//2.判断文件类型,是否是文件是否是文件目录
if(!file01.exists() || !file01.isDirectory()){
return;
}
//3.创建一个文件数组来进行循环遍历;
File[] files=file01.listFiles();
//4.用for each循环来遍历输出
for(File f:files){
//5.判断文件类型是否为文件目录
//如果是文件目录
if(f.isDirectory()){
//输出文件目录所在的路径
System.out.println(f.getPath()+"<Dir>");
//继续调用本方法
showFile(f.getPath());
}
else {
//如果不是则输出文件所在的路径
System.out.println(f.getPath());
}
}
}
IO流
IO流的介绍
IO都是全大写 说明肯定是两个单词的首字母
I inputstream 输入流 O outputstream 输出流
IO 称之为 java的输入输出
其实学习IO 就是学习 如何通过java代码 对文件内容 进行 读(输入流) 写(输出流)
所以有一话: 读进来 写出去
IO的作用:就是对文件中的内容进行操作。
输入: 读操作(读取文件的内容) 输出: 写操作(往文件中写内容)
IO流的分类:
(1)根据流的方向:
---输入流: 程序可以从中读取数据的流。
---输出流: 程序能向其中写入数据的流。
(2)根据流的单位:
---字节流: 以字节为单位传输数据的流
---字符流: 以字符为单位传输数据的流
(3)根据功能
---节点流: 直接和文件进行交互,用于直接操作目标设备的流。
---处理流(过滤流): 不是直接作用在文件上。 是对一个已存在流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
四个基本的流: 其他的流都是在这四个流的基础上进行扩展的
字节输入流
字节输出流
字符输入流
字符输出流
Writer字符输出流
它是所有字符输出流的根类。---FileWriter类
字符输出流 ---指定对哪个文件(路径)进行写操作
1.创建:
Writer write对象=new FileWriter(路径)
2.添加
writer对象.write(内容);
3.刷新流
write对象.flush();
4.关闭流资源
write.close();
5.追加内容
上面每次往文件中写内容时 就会把原来的内容覆盖了。
我们只需要在创建write对象时在路径后加上true即:
Writer write对象=new FileWriter(路径,true)