File类的构造方法
File(String pathname): 将一个字符串路径封装成File对象
File(String parent,String child): 传入一个父级路径和子级路径
File(File parent,String child): 传入一个File类型的父级路径和子级路径
import java.io.File;
public class FileDemo1 {
public static void main(String[] args) {
//创建文件夹或者文件对象方式1
File f1=new File("D:\\重要代码Demo\\文件IO对象");
//创建文件夹或者文件对象方式2
String s1="D:\\重要代码Demo\\文件IO对象";
File f2 = new File(s1);
//创建文件夹或者文件对象方式3
File f3 = new File("D:\\", "重要代码Demo\\文件IO对象");
//创建文件夹或者文件对象方式4
String s2="D:\\";
String s3="重要代码Demo\\文件IO对象";
File f4 = new File(s2, s3);
}
}
方法
boolean createNewFile(): 指定路径不存在该文件时时创建文件,返回true,否则返回false
boolean mkdir(): 当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false
boolean mkdirs(): 当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false
boolean delete(): 删除文件或者删除单级文件夹
package com.bianyiit.file;
import java.io.File;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
//创建文件对象
//File f1 = new File("D:\\重要代码Demo\\文件IO对象\\filedemo1.txt");
//创建文件夹对象
File f2 = new File("D:\\重要代码Demo\\文件IO对象\\FileDemo1\\File");
//创建文件
/*boolean newFile = f1.createNewFile();
System.out.println(newFile);*/
//创建单级文件夹
/*boolean mkdir = f2.mkdir();
System.out.println(mkdir);*/
//创建多级文件夹
/*boolean mkdirs = f2.mkdirs();
System.out.println(mkdirs);*/
//删除文件或者删除单级文件夹(只能一个一个的删除文件夹/文件)
/*boolean delete1 = f1.delete();
System.out.println(delete1);*/
boolean delete2 = f2.delete();
System.out.println(delete2);
}
}
判断方法
boolean exists(): 判断指定路径的文件或文件夹是否存在
boolean isAbsolute(): 判断当前路路径是否是绝对路径
boolean isDirectory(): 判断当前的目录是否存在
boolean isFile(): 判断当前路径是否是一个文件
boolean isHidden(): 判断当前路径是否是隐藏文件
package com.bianyiit.file;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
File f1 = new File("D:\\重要代码Demo\\文件IO对象\\FileDemo1");
File f2 = new File("FileDemo1");
//判断文件/文件夹是否存在
boolean exists = f1.exists();
System.out.println("该文件夹是否存在:"+exists);
//判断当前路径是否是绝对路径
//绝对路径是以盘符开头的路径 相对路径没有盘符开头的路径
boolean absolute = f1.isAbsolute();
System.out.println("D:\\重要代码Demo\\文件IO对象\\FileDemo1是否是绝对路径:"+absolute);
boolean absolute1 = f2.isAbsolute();
System.out.println("FileDemo1是否是绝对路径:"+absolute1);
//注意:如果创建文件的时候是以相对路径进行创建,那么默认在项目的根目录下面
//判断当前目录是否存在
boolean directory = f1.isDirectory();
System.out.println("D:\\重要代码Demo\\文件IO对象\\FileDemo1是否存在"+directory);
//判断当前路径是否为文件
boolean file = f2.isFile();
System.out.println("是否是一个文件:"+file);
//判断是否隐藏文件
boolean hidden = f1.isHidden();
System.out.println("是否隐藏文件:"+hidden);
}
}
获取功能
File getAbsoluteFile(): 获取文件的绝对路径,返回File对象
String getAbsolutePath(): 获取文件的绝对路径,返回路径的字符串
String getParent(): 获取当前路径的父级路径,以字符串形式返回该父级路径
File getParentFile(): 获取当前路径的父级路径,以字File对象形式返回该父级路径
String getName(): 获取文件或文件夹的名称
String getPath(): 获取File对象中封装的路径
long lastModified(): 以毫秒值返回最后修改时间
long length(): 返回文件的字节数
boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径
package com.bianyiit.file;
import java.io.File;
import java.util.Date;
public class FileDemo4 {
public static void main(String[] args) {
//File getAbsoluteFile(): 获取文件的绝对路径,返回File对象,如果只单纯使用一个对象,那么就会返回项目路径\\文件文件IO对象
File f1 = new File("D:\\重要代码Demo\\文件IO对象\\FileDemo1\\a.txt");
File absoluteFile = f1.getAbsoluteFile();
System.out.println(absoluteFile);
//String getAbsolutePath(): 获取文件的绝对路径,返回路径的字符串
String absolutePath = f1.getAbsolutePath();
System.out.println(absolutePath);
//String getParent(): 获取当前路径的父级路径,以字符串形式返回该父级路径
String parent = f1.getParent();
System.out.println(parent);
//File getParentFile(): 获取当前路径的父级路径,以字File对象形式返回该父级路径
File parentFile = f1.getParentFile();
System.out.println(parentFile);
//String getName(): 获取文件或文件夹的名称
String name = f1.getName();
System.out.println(name);
//String getPath(): 获取File对象中封装的路径
String path = f1.getPath();
System.out.println(path);
//long lastModified(): 以毫秒值返回最后修改时间
long l = f1.lastModified();
Date date = new Date(l);
System.out.println(date.toLocaleString());
//long length(): 返回文件的字节数
long length = f1.length();
System.out.println(length);
// boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径
File f2 = new File("D:\\重要代码Demo\\文件IO对象2\\b.txt"); //已经将a.txt从以前的路径迁移到当前路径下了,并且文件名也已经改了
boolean b = f1.renameTo(f2);
System.out.println(b);
}
}
//输出结果:
D:\重要代码Demo\文件IO对象\FileDemo1\a.txt
D:\重要代码Demo\文件IO对象\FileDemo1\a.txt
D:\重要代码Demo\文件IO对象\FileDemo1
D:\重要代码Demo\文件IO对象\FileDemo1
a.txt
D:\重要代码Demo\文件IO对象\FileDemo1\a.txt
2019-11-19 19:47:25
0
true
其他功能
String[] list(): 以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
File[] listFiles(): 以File对象的形式返回当前路径下所有的文件和文件夹的名称
static File[] listRoots(): 获取计算机中所有的盘符
package com.bianyiit.file;
import java.io.File;
public class FileDemo5 {
public static void main(String[] args) {
//String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
File f1 = new File("D:\\重要代码Demo");
String[] list = f1.list();
for (String s : list) {
System.out.println(s);
}
//File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
File[] files = f1.listFiles();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
//static File[] listRoots():获取计算机中所有的盘符
File[] files1 = File.listRoots();
for (File file : files1) {
System.out.println(file);
}
}
}
//输出结果:
WeChatProjects
workspace
文件IO对象
文件IO对象2
D:\重要代码Demo\WeChatProjects
D:\重要代码Demo\workspace
D:\重要代码Demo\文件IO对象
D:\重要代码Demo\文件IO对象2
C:\
D:\
file类中递归的应用
1.找出某目录下的所有文件
package com.file;
import java.io.File;
public class GetDirectory {
//获取e盘a文件下所有的文件
public static void main(String[] args) {
/*分析
* 1.要获取a文件下所有的文件和文件夹对象
* 2.判断这个对象是文件还是文件夹,是文件,直接输出,是文件夹
* 又要获取改文件夹下的所有文件和文件夹
* 3.以此类推下去,一直判断,最终得到a文件夹下所有的文件(递归思想)*/
//定义文件对象,给定文件夹
File f=new File("E:\\a");
getFile(f);
}
private static void getFile(File f) {
//获取a文件下的所有文件和文件夹
File[] files = f.listFiles();
//遍历files,得到单个文件或文件夹对象
for (File file : files) {
// System.out.println(file);
//判断是否为文件夹,是,继续获取下面的文件和文件夹,不是,直接输出
if(file.isDirectory()){//是文件夹,则继续获取该文件夹下的文件和文件夹
getFile(file);//递归调用
}else{//是文件
System.out.println(file);
}
}
}
}
2.删除某文件夹下所有的文件和文件夹
package com.file;
import java.io.File;
public class DeleteFile {
public static void main(String[] args) {
//定义文件对象
File f=new File("E:\\a");
delete(f);
}
public static void delete(File file){
//获取该文件下所有的文件和文件夹
File[] files = file.listFiles();
//遍历files,得到单个的file
for (File file1 : files) {
if(file1.isFile())
{//存在文件就删除
file1.delete();
}else if(file1.isDirectory()){//不是就打开文件夹
delete(file1);
}
}
file.delete();
}
}