package com.Ioooo;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
public class fileOjb {
/*
* Java的标准库 java.io 提供了 File 对象来操作文件和目录。
* */
public static void main(String[] args) throws IOException {
/*
* Windows 使用 \ 作为路径分隔符,在Java字符串中需要使用 \ 表示一个 \
* Linux 平台使用 / 作为路径分割符
* */
File f = new File("D:\project\JavaSE\fileooo");
System.out.println(f);
/*
* File对象有3种形式表示的路径
* - getPath() 返回构造方法传入的路径
* - getAbsolutePath() 返回绝对路径
* - getCanonicalPath() 和绝对路径相似,但是返回的是规范路径
* 绝对路径和规范路径区别:
* 绝对路径:C:\Windows\System32..\notepad.exe
* 规范路径:C:\Windows\notepad.exe
* 因Windows和Linux的路径分割符不同,File对象有一个静态变量用于表示当前平台的系统分隔符
* File.separator 根据当前平台打印 \ or /
* */
/*
* 文件和目录
* File 对象即可表示文件,也可表示目录。构造 File 对象不会导致磁盘操作。只有当我们调用 File 对象的某些方法的时候,才会进行。
* isFile() 判断 File 对象是否是一个已存在的文件
* isDirectory() 判断 File 对象是否是一个已存在的目录
* */
System.out.println(f.isFile());
/*
* 判断文件的权限和大小
* - boolean canRead() 是否可读
* - boolean canWrite() 是否可写
* - boolean canExecute() 是否可执行
* - boolean length() 文件字节大小
* 对于目录而言,是否可执行表示能否列出它包含的文件和子目录。
* */
// 创建文件
File file = new File("D:\project\JavaSE\file2.txt");
if(!file.isFile()){
System.out.println("文件不存在,即将创建:"+file.getAbsolutePath());
file.createNewFile();
System.out.println("现在文件存在么:"+file.isFile());
System.out.println("开始删除文件");
file.delete();
System.out.println("文件还存在么:"+file.isFile());
}
/*
* File 对象提供了 createTempFile() 创建临时文件,以及 deleteOnExit() 在JVM退出时自动删除该文件。
* */
/*
* 遍历文件和目录
* 使用 list() 和 listFiles() 列出目录下的文件和子目录名。listFile()提供一系列重载方法,可以过滤不想要的文件。
* */
File file2 = new File("D:\project\JavaSE\day3\src\com");
String[] fs1 = file2.list();
File[] fs2 = file2.listFiles();
System.out.println(Arrays.toString(fs1));
fileOjb.printFiles(fs2);
/*
* 目录的创建和删除
* - boolean mkdir() 创建当前 file 对象表示的目录
* - boolean mkdirs() 创建当前 file 对象表示的目录,并在必要时将不存在的父目录也创建出来。
* - boolean delete() 删除当前 file 对象表示的目录,只能当前目录为空的情况下才能删除。
* */
/*
* Path 对象
* 它位于 java.nio.file 包,Path 和 file 对象相似,但操作更加简单。
* */
System.out.println("=============path=============");
Path p1 = Paths.get(".","project","study"); // 构造一个Path对象
System.out.println(p1);
Path p2 = p1.toAbsolutePath();// 绝对路径
System.out.println(p2);
Path p3 = p1.normalize(); // 规范路径
System.out.println(p3);
File file3 = p3.toFile(); // 转换成 File 对象
System.out.println(file3);
for (Path p : Paths.get("..").toAbsolutePath()){
System.out.println("path>>"+p);
}
}
public static void printFiles(File[] files){
System.out.println("======打印文件=======");
if(files != null){
for (File f : files){
System.out.println(f);
}
}
System.out.println("======打印文件=======");
}
}