1.File类的使用
/**
* @ClassName: java高级进阶
* @Description:File类的使用
*
* 1.File类的一一个对象,代表-一个文件或一一个文件 目录(俗称:文件夹)
* 2.File类声明在java. io包下
* 3. File类中涉及 到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,
* 并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
* 4.后续Filej类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".
**/
public class FileTest {
/*
如何创建File类的实例
public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
➢绝对路径:是一个固定的路径,从盘符开始
➢相对路径:是相对于某个位置开始
public File(String parent,String child)
以parent为父路径,child为 子路径创建File对象。
public File(File parent,String child)
根据一个父File对象和子文件路径创建File对象
2.路径分隔符
windows: \ \
unix:/
*/
@Test
public void test(){
//内存层面的对象
//构造器1
File file = new File("hello.txt");//相对于当前module 相对路径
File file2 = new File("G:\\OneDrive\\OneDrive - sdtbu.edu.cn\\java知识准备\\java编程源码\\java高级进阶\\src\\com\\test\\IO\\he.txt");//绝对路径
System.out.println(file);
System.out.println(file2);
//构造器二
File file3 = new File("G:\\OneDrive\\OneDrive - sdtbu.edu.cn\\java知识准备\\java编程源码\\java高级进阶\\src\\com\\test\\IO","he");//文件目录
System.out.println(file3);
//构造器三
File file4 = new File(file3,"he.txt");//文件目录
System.out.println(file4);
}
/*
获取操作:
public String getAbsolutePath(): 获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent(): 获取上层文件目录路径。若无,返回null
public Long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long LastModified() :获取最后一次的修改时间,毫秒值
如下的两个方法适用于文件目录:
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
public boolean renameTo(File dest): 把文件重命名为指定的文件路径
比如: file1. renameTo(file2)为例:返回布尔值
要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
*/
/*
判断功能
public boolean isDirectory(): 判断是否是文件目录
public boolean isFile() :判断是否是文件
public boolean exists() :判断是否存在
public boolean canRead() :判断是否可读
public boolean canWrite() :判断是否可写
public boolean isHidden() :判断是否隐藏
*/
/*
创建硬盘中对应的文件或文件目录
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建。
删除磁盘中的文件或文件目录
public boolean delete(): 删除文件或者文件夹
删除注意事项:
Java中的删除不走回收站。
*/
}
package com.fq.lz.Day21.Day20_3_IO;
import java.io.File;
import java.io.IOException;
/**
* @author GoodTime0313
* @version 1.0
* @Description File类表示文件
* @date 2021/3/25 14:39
*/
public class FileDemo1 {
public static void main(String[] args) throws IOException {
//File表示硬盘中的一个文件
//1.创建
//1.1 调用构造方法创建File对象(文件可以存在也可以不存在)
File file = new File("file_1.txt");
//1.2 如果文件不存在,创建
if (!file.exists()) {
boolean newFile = file.createNewFile();
System.out.println("创建的结果"+newFile);
}else{
System.out.println("文件已存在");
}
System.out.println("-------------------");
//2.删除
//2.1 直接删除
//boolean delete = file.delete();
//System.out.println("删除的结果:" + delete);
//2.2 JVM退出时删除 void
// file.deleteOnExit();
System.out.println("-------------------");
//3.获取
//3.1 获取相对路径
System.out.println(file.getPath());
//3.2 获取相对路径
System.out.println(file.getAbsolutePath());
//3.3 获取名称
System.out.println(file.getName());
//3.4 获取文件大小
System.out.println(file.length());
//3.5 获取最后一次修改的时间
System.out.println(file.lastModified());
System.out.println("-------------------");
//4.判断
//4.1 是不是文件
System.out.println(file.isFile());
//4.2 是不是隐藏的
System.out.println(file.isHidden());
//4.3 是不是可读
System.out.println(file.canRead());
//4.4 是不是可写
System.out.println(file.canWrite());
//5. 重命名
System.out.println(file.renameTo(new File("file_2.txt")));
//可以实现剪切功能 改位置,改文件名
//System.out.println(file.renameTo(new File("d:/file_2.txt")));
}
}
/**
* @author GoodTime0313
* @version 1.0
* @Description File表示硬盘中的目录(文件夹)
* @date 2021/3/25 15:10
*/
public class FileDemo2 {
public static void main(String[] args) {
//1.创建
//1.1 创建File对象,并指定一个目录
File file = new File("c.txt");
System.out.println(file.toString());
//1.2 创建目录
if (!file.exists()) {
//单级目录
file.mkdir();
//多级目录
file.mkdirs();
} else {
System.out.println("目录已经存在");
}
//2.删除
//2.1 直接删除 只能删除最深层的,必须是空目录
System.out.println(file.delete());
//2.2 JVM来删除
// file.deleteOnExit();
//3.获取
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
//最里层的目录
System.out.println(file.getName());
//4.判断
//4.1 是不是文件夹
System.out.println(file.isFile());
System.out.println(file.isHidden());
System.out.println(file.isAbsolute());
//5.重命名:只是该最底层的文件夹,父目录不存在为false
System.out.println(file.renameTo(new File("d.txt")));
//6.遍历目录
//6.1 获取当前目录下的文件夹和文件夹名
String[] list1 = file.list();
for (String s : list1) {
System.out.println(s);
}
//6.2 按条件过滤文件
String[] list = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//return true 符合要求 false 不符合要求
if (name.endsWith(".jpg")) {
return true;
}
return false;
}
});
//6,3 获取当前目录下的文件夹和文件夹名 (file数组)
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(file1.getName());
}
//6.4 获取当前目录下的文件
File[] files1 = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".jpg")) {
return true;
}
return false;
}
});
}
}
案例1:递归遍历文件夹
/**
* @author GoodTime0313
* @version 1.0
* @Description 递归遍历文件夹
* @date 2021/3/25 16:11
*/
public class FileDemo1 {
public static void main(String[] args) {
File file = new File("E:\\百度网盘文件\\a");
listDir(file,0);
}
public static void listDir(File file,int level) {
File[] files = file.listFiles();
System.out.println(getSeparator(level)+file.getName());
level++;
if (files != null && files.length > 0) {
for (File file1 : files) {
if (file1.isDirectory()) {
listDir(file1,level);
} else {
System.out.println(getSeparator(level)+file1.getName());
}
}
}
}
public static String getSeparator(int level){
if (level == 0){
return "";
}
StringBuilder builder = new StringBuilder();
for (int i = 0; i < level; i++) {
builder.append("___");
}
return builder.toString();
}
}
案例2:递归删除文件夹
/**
* @author GoodTime0313
* @version 1.0
* @Description 递归删除文件夹
* @date 2021/3/25 16:31
*/
public class FileDemo2 {
public static void main(String[] args) {
File file = new File("E:\\百度网盘文件\\a");
listDeleteDir(file);
}
public static void listDeleteDir(File file) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
for (File file1 : files) {
if (file1.isDirectory()) {
listDeleteDir(file1);
} else {
file1.delete();
}
}
}
file.delete();
}
}
File类的限制,只能看见文件或文件夹的大小,名字等,但是里面的内容控制不了。
Click here to view the copyright notice of this site(点击此处查看本站版权声明)
必须 注册 为本站用户, 登录 后才可以发表评论!