版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40990836/article/details/78954823
File 类
所属java . io包
File 类 操作对象: 文件
功能:
- 可以独立完成用户对文件及文件夹的操作要求
- 可以辅助io包下其他流类对文件的具体操作(eg:读 | 写) 复制 剪切 网络请求 数据解析
public class File01{
public static void main(String[] args){
Logger log = LogManager.getLogger();
// 需要借助log4j2,创建一个单独向文件中 输出错误信息的log
// 1.完善配置信息
// 1)增加向文件输出的Appender
// 2)设置对应输出的Logger
// 2.在类中 创建Logger 对应的 logger对象
// 1)在特定的Logger 在使用时,便会向文件中输出错误信息
Logger flLog = LogManager.getLogger("fllog");
log.info("这是File01文件");
// 如何创建File实例
// 1.通过文件路径名(字符串)来创建File实例
// File(String pathname)
// 1)通过绝对路径获取桌面File 实例
// i)拿到桌面绝对路径字符串形式
String path = "/Users/lanou/Desktop";
// ii)通过路径字符串构造出File
File dtFile = new File(path);
// iii)验证实例是否正确
log.info(dtFile.exists());
// 2)通过相对路径 获取 log4j2.xml File 实例
// i)首先明确File 构造时的相对路径的默认文件夹
// 思考:项目根目录?? 项目根目录src下 WEB项目 WEB_INF文件夹
// ii)确定目标文件与相对路径默认文件夹的关系
// 关系:src/log4j2.xml ? log4j2.xml?
// iii)通过对应字符串构造出File 实例
String logPath = "./src/log4j2.xml";
File logFile = new File(logPath);
// iv)验证实例是否正确
log.info(logFile.exists());
// 结论:默认文件夹 = 项目根目录
// 拓展:
// 绝对路径根目录:/
// 相对路径跟目录(当前目录): ./
// 当前目录的上一级目录: ../
// 2.通过父级File 对象,确定子级并生成File 实例
// File(File parent,String child)
// i)获取父级File 对象,并确定子级路径字符串
// dtFile test
String child = "test";
// ii)生成子级File 实例
File testFile = new File(dtFile , child);
// iii)验证File实例
log.info(testFile.exists());
// 3.通过父级路径,子级路径,生成file实例
// File(File parent,String child)
// 返回桌面找到test 文件夹
testFile = new File("./../../Desktop","test");
log.info(testFile.exsits());
// 4.通过URI对象,生成File实例
// File (URI uri)
// i)确定目标的URI字符串形式
String uriStr = "file:///Users/lanou/Desktop/test";
// ii)生成目录URI对象
URI uri = null;
// 可能会报出异常
try{
uri = new URI(uriStr);
}catch(URISyntaxException e){
flLogger.warn("URISyntaxException:" + e.getMessage());
}
// iii) 通过URI 对象生成File 实例
// 注:File 构造器可以解析 file://协议uri
try{
// 指针的重指向
testFile = new File(uri);
// catch 匹配异常
}catch(IllegalArgumentException e){
flLogger.warn("IllegalArgumentException" + e.getMessage());
}
log.info(testFile.exists())
}
}
File 类中的常用方法:
//File对象是否存在
File f1 = new File("./src/log4j2.xml");
ROOT_LOG.info("log4j2.xml存在情况:" + f1.exists());
//文件的大小
ROOT_LOG.info("文件大小" + f1.length());
// 空间
File dtFile = new File("/Users/lanou/Desktop");
ROOT_LOG.info("总空间: " + dtFile.getTotalSpace());
ROOT_LOG.info("总余空间:" + dtFile.getFreeSpace());
ROOT_LOG.info("可用空间:" + dtFile.getUsableSpace());
// 相关判断
// 1)是否是文件夹
// 2)是否是文件
// 3)是否是隐藏文件
ROOT_LOG.info("桌面是文件夹吗?" + dtFile.isDirectory());
ROOT_LOG.info("XML是文件吗?" + f1.isFile());
// 获取项目跟目录下 .project 隐藏文件 .setting 隐藏文件夹
File f2 = new File("./.project");
File f3 = new File("./.settings");
ROOT_LOG.info(".project隐藏文件:" + f2.isHidden());
ROOT_LOG.info(".settings隐藏文件夹:" + f3.isHidden());
// 4)是否是绝对路径
ROOT_LOG.info("xml是否是绝对路径获取:" + f1.isAbsloute());
ROOT_LOG.info("桌面是否是绝对路径获取:" + dtFile.isAbsloute());
// 5.文件本身相关操作
// 1)文件名
ROOT_LOG.info("f1的文件名 :" + f1.getName());
// 2)文件全名,(拥有路径信息)
ROOT_LOG.info("f1的文件名:" + f1.getPath());
ROOT_LOG.info("f1的文件名:" + f1.getAbsolutePath());
// 3)获取父级
ROOT_LOG.info("f1的父级:" + f1.getPartent()); // 返回的是字符串
ROOT_LOG.info("f1的父级:" + f1.getParentFile()); // 返回的是对象
创建文件
- 创建无后缀名文件
- 创建有后缀名文件
- 获取存放文件的路径
- 确定所创建的文件名
- 创建目标文件
public class File03{
public static final Logger ROOT_LOG = logManager.getLogger();
public static final Logger FILE_LOG = logManager.getLogger(fllog);
public static void main(String[] args){
String path = "file03";
String name1 = "new1";
String name2 = "new1.txt";
File f1 = new File(path , name1);
File f2 = new File(path , name2);
// 万物初为假
boolean res = false;
try{
res = f1.creatNewFile();
res = f2.creatNewFile();
}catch(IOException e){
FILE_LOG.warn("IOException: 文件创建失败");
}
ROOT_LOG.info("文件创建失败" + res);
}
}