概念
JDK提供的表示和操作电脑磁盘中的文件夹或者文件
在JDK中 java.io.File
使用这个File 把磁盘中文件夹 和 文件 抽象成一个类 ,在虚拟机中进行操作
如果你想操作这些文件 ,第一点要找到这些文件 ,文件的位置在哪,文件的url地址 ,只要把文件的地址给你,你就可以创建一个文件对象,文件地址:文件在磁盘的位置 :E://log/log.txt
地址分为两类 :
- 绝对地址相对于盘符 例如 :E://log/log.txt、E:\woniu\57\JavaSE\day17\Day17_SetAndMap集合.md
相对地址相对于你正在操作的文件的位置 ,file.txt 、../hello.java 两个点 代表 上一级目录
如何创建一个文件对象
在windows操作系统中 ,文件的分隔符 是使用的 “/“ ,如果使用反斜杠 \ 必须使用两个反斜杠 \ 因为反斜杠在Java程序中代表是 转义字符 如果想把反斜杠在java程序中当成 反斜杠使用 必须转义
File 对象的API方法
public class TestFile01 {
public static void main(String[] args) {
String path = “E:/woniu/57/JavaSE”;
//创建文件对象
File f1 = new File(path);
System.out.println(f1.getName());
//创建 E:/woniu/57/JavaSE/day01文件夹的对象
String path1 = “E:/woniu/57/JavaSE/day01”;
//File f2 = new File(path1);
//File f2 = new File(f1,”day01”);
File f2 = new File(“E:/woniu/57/JavaSE”,”day01”);
System.out.println(f2.getName());
}
}public class TestFile02 {
public static void main(String[] args) throws IOException {
//创建 E:/woniu/57/JavaSE/Hello.java 对象
String path = “E:/woniu/57/JavaSE/Hello.java”;
File f = new File(path);
//打印文件的名字
String fileName = f.getName();
//打印 文件的大小
long length = f.length();
System.out.println(fileName + “—-“+length);
//获取文件最后一次被修改的时间
long lastModified = f.lastModified();
Date d = new Date(lastModified);
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.println(“最后修改的时间是:”+sdf.format(d));
//判断一下 这个对象 是文件 还是文件夹 (目录)
boolean file = f.isFile();
System.out.println(file);
//判断当前对象 是不是一个 目录 (文件夹)
boolean directory = f.isDirectory();
System.out.println(directory);
//判断一下文件是否存在
boolean exists = f.exists();
System.out.println(exists);
String path1 = “E:/woniu/57/JavaSE/HelloWorld.java” ;
File file1 = new File(path1);
System.out.println(file1.exists()); //false
//如果文件不存在 创建出来这个文件
if(!file1.exists()){
boolean createNewFile = file1.createNewFile();
System.out.println(“createNewFile—->”+createNewFile);
}
//删除这个文件
if(file1.exists()){
//boolean delete = file1.delete(); //删除文件
file1.deleteOnExit(); //不会立刻删除 当虚拟机退出的时候 删除文件
}
System.out.println(file1.exists());
//获取文件的路径
String path2 = f.getPath();
System.out.println(“f.getPath() —->”+path2);
String absolutePath = f.getAbsolutePath();
System.out.println(“f.getAbsolutePath()—->”+absolutePath);
//获取父文件的路径 (一定是一个 目录)
String parent = f.getParent();
System.out.println(“f.getParent()——>”+parent);
//获取父文件对象 (目录)
File parentFile = f.getParentFile();
}
}public class TestFile03 {
public static void main(String[] args) {
String path = “E:/woniu/57/JavaSE/day01”;
File file = new File(path);
if(file.isDirectory()){
//获取此目录下所有文件的名字
String[] list = file.list();
for(String s :list){
System.out.println(s);
}
}
System.out.println(“=======”);
//获取目录下 所有的文件对象
if(file.isDirectory()){
File[] listFiles = file.listFiles();
for(File f :listFiles){
System.out.println(f.getName());
}
}
System.out.println(“==============”);
String path1 = “E:/wugd” ;
//创建和这个文件夹
File f1 = new File(path1);
if(!f1.exists()){
//创建文件夹
f1.mkdir();
}
String path2 = “E:/wugd/a/b/c/d”;
File f2 = new File(path2);
if(!f2.exists()){
//创建多级 文件夹
f2.mkdirs();
}
//打印 某一个 目录下的 所有 文件及 文件夹的名字 例如 :E:/woniu/57/JavaSE
}
}- public long length() 文件的大小 按字节计算
- public boolean isFile() 判断文件对象 是不是一个文件
- public boolean isDirectory() 判断文件对象 是不是一个目录或者文件夹
- public boolean exists() 判断文件是否存在
- public boolean createNewFile() throws IOException 创建一个新的文件
- public boolean mkdir() 创建一个一级文件夹
- public boolean mkdirs() 创建多级文件夹
- public boolean delete() 删除文件
- public void deleteOnExit() 虚拟机停止的才删除
- public String getName() 获取文件的名字
- public String getPath() 获取文件的路径
- public String getAbsolutePath() 获取文件的绝对路径
- public String getParent() 返回父文件的路径
- public boolean renameTo(File dest) 文件重命名
- public String[] list() 返回文件夹下所有文件的 名字
- public File[] listFiles() 返回文件夹下的 所有文件对象
- public boolean isHidden() 判断文件是否为隐藏文件
- public long lastModified() 返回文件最近修改时间
- public File getParentFile() 返回父文件对象
递归打印文件的名字
public class TestPrintFileName {
public static void main(String[] args) {
String path = “E:/woniu/57/JavaSE” ;
File f = new File(path);
printFileName(f,0);
}
static void printFileName(File f , int level){
for(int i=0;iSystem.out.print(“ “);
}
System.out.println(f.getName());
//判断是否是 目录
if(f.isDirectory()){
File[] listFiles = f.listFiles();
level++ ;
for(File file :listFiles){
printFileName(file,level);
}
}
}
}