总结一些File的基本用法。
一、File类的一些常用方法
第一类:访问文件名相关的方法
1.String getName() 返回此File对象所表示的文件名或路径名(若为路径,则返回最后一级子路径名)
2.String getPath() 返回此File对象所对应的路径名
3.String getParent() 返回此File对象所对应的目录(最后一级子目录)的父目录名
4.boolean renameTo(File newName)重命名此File对象所对应的文件或目录,如果重命名成功返回true,否则返回false
第二类:文件检测相关的方法
boolean exists() 判读File对象所对应的文件或目录是否存在
boolean isFile() 判断File对象所对应的是否是文件,而不是目录
boolean isDirectory() 判断File对象所对应的是否是目录而不是文件
boolean canRead()判断File对象所对应的文件或目录是否可读
boolean canWrite()判断File对象所对应的文件或目录是否可写
第三类:获取常规文件信息的相关方法
long lastModified() 返回文件的最后修改时间
long length() 返回文件内容的长度。
第四类:文件或目录操作相关的方法
boolean createNewFile() 当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件
boolean delete() 删除File对象所对应的文件或路径
boolean mkdir() 试图创建一个File对象所对应的目录,调用方法时File对象必须对应一个路径,而不是一个文件
boolean mkdirs()同mkdir()方法
String[] list()列出File对象所对应的所有子文件名和路径名,返回String数组
File[] listFiles 列出File对象所对应的所有子文件和路径,返回File数组
二:值得注意的地方
1.delete()方法既可以删除文件也可以删除文件夹,但是删除的文件夹需要是空文件夹
2.注意mkdir()和mkdirs()之间的区别
mkdir()和mkdirs()都是创建一个目录,路径名都由当前File对象指定,如果该目录能被创建则为 true;否则为 false。
但是:
mkdir() 只能在已经存在的目录中创建创建文件夹,如果在不存在的目录下创建就会失败。
mkdirs() 可以在不存在的目录中创建文件夹。
三、File的应用Demo
package javaDemo;
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) {
// 创建文件夹
createDirectoty();
// 创建文件
createFile("fileDemo/directory/file2.txt");
createFile("fileDemo/file3.txt");
// 删除文件
// deleteFile();
// 删除fileDemo目录下的所有文件
deleteFile2("fileDemo");
}
// 删除文件
private static void deleteFile() {
// File file = new File("fileDemo");//想直接删除整个文件夹--失败
// File file = new File("fileDemo/directory");//想直接删除父目录下的某个子文件夹--失败
// File file = new
// File("fileDemo/directory/file2");//想直接删除父目录下的某个子文件夹下的文件--失败
File file = new File("fileDemo/directory/file2.txt");// 想直接删除父目录下的某个子文件夹下的文件(带后缀)--成功
boolean isDeleteFile = false;
if (file.exists()) {
isDeleteFile = file.delete();
}
System.out.println("===" + isDeleteFile);
}
private static void deleteFile2(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
File[] files = file.listFiles();
System.out.println("file.length:" + file.length());
for (int i = 0; i < files.length; i++) {
System.out.println("files[" + i + "] = " + files[i].getName());
if (!files[i].exists()) {
continue;
}
boolean isDeleteChildFile = false;
if (files[i].isFile()) {
isDeleteChildFile = files[i].delete();
System.out.println("=== fileName:" + files[i].getName() + " isDeleteChildFile:" + isDeleteChildFile);
}
if (files[i].isDirectory()) {
deleteFile2(files[i].getPath());
}
}
boolean isSuccessfule = file.delete();
System.out.println("===fileName:" + file.getName() + " isSuccessfule:" + isSuccessfule);
}
/**
* 创建文件
*
* @param path
*/
private static void createFile(String path) {
File file = new File(path);
boolean isCreateFile = false;
try {
isCreateFile = file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("path = " + path + " isCreateFile:" + isCreateFile);
}
/**
* 创建文件夹
*/
private static void createDirectoty() {
File file = new File("fileDemo", "directory");
boolean isCreateDirectory = false;
if (!file.exists()) {
// boolean isSuccessful = file.mkdir();//如果目录fileDemo不存在,就会创建失败
isCreateDirectory = file.mkdirs();//如果fileDemo目录不存在会自动创建一个fileDemo父目录
}
System.out.println("===" + isCreateDirectory);
}
}