File类
在线API文档
File类封装了一些对文件操作的常用方法
1、构造方法
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
/**
* File类的构造函数
* @author LingDu
*
*/
public class DemoFile {
public static void main(String[] args) {
File f1 =new File("src/test.txt");
File f2 =new File(f1,"test.txt");
File f3 =new File("src","test.txt");
File f4 =new File(File.separator + "src");
System.out.println(f4);
}
}
2、创建方法
/**
* 新建一个文件
*/
public static void test1(){
File file = new File("newFile.txt");
try {
System.out.println("创建文件:" + file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 新建一个文件夹
*/
public static void test2(){
File file = new File("newDir");
System.out.println("创建文件夹:" + file.mkdir());
}
/**
* 新建一个多级文件夹
*/
public static void test3(){
File file = new File("newDir/1/2/3");
System.out.println("创建多级文件夹:" + file.mkdirs());
}
3、删除方法
/**
* 删除文件
*/
public static void test4(){
File file = new File("newFile.txt");
System.out.println("删除文件:" + file.delete());
}
/**
* 删除文件夹
*/
public static void test5(){
File file = new File("newDir");
System.out.println("删除文件夹:" + file.delete());
}
4、修改方法
重命名文件/文件夹
- boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
/**
* 重命名一个文件/文件夹
* 将newFile.txt改成File.txt
*/
public static void test6(){
File file = new File("newFile.txt");
System.out.println("重命名文件:" + file.renameTo(new File("File.txt")));
}
修改权限
boolean setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。
boolean setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。
boolean setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。
public static void test8(){
File file = new File("File.txt")
System.out.println("文件修改前的属性:--------------------")
System.out.println("查看文件是否可读:" + file.canRead())
System.out.println("查看文件是否可写:" + file.canWrite())
System.out.println("查看文件是否可执行:" + file.canExecute())
//修改为 不可读、不可写、不可执行
file.setReadable(false)
file.setWritable(false)
file.setExecutable(false)
System.out.println("文件修改后的属性:--------------------")
System.out.println("查看文件是否可读:" + file.canRead())
System.out.println("查看文件是否可写:" + file.canWrite())
System.out.println("查看文件是否可执行:" + file.canExecute())
}
5、判断方法
boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。
boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。
boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
public static void test7() {
File file = new File("File.txt")
System.out.println("文件是否可读:" + file.canRead())
System.out.println("文件是否可写:" + file.canWrite())
System.out.println("文件是否可执行:" + file.canExecute())
System.out.println("文件是否存在:" + file.exists())
System.out.println("路径名是否为绝对路径名:" + file.isAbsolute())
System.out.println("文件是否是一个目录:" + file.isDirectory())
System.out.println("文件是否是一个标准文件:" + file.isFile())
System.out.println("文件是否是一个隐藏文件:" + file.isHidden())
}
6、获取方法
File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile() 返回此抽象路径名的规范形式。
String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。
String getPath() 将此抽象路径名转换为一个路径名字符串。
long getTotalSpace() 返回此抽象路径名指定的分区大小。
long getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
long length() 返回由此抽象路径名表示的文件的长度。
static File[] listRoots() 列出可用的文件系统根。
/**
* 常用获取方法
*/
public static void test9() {
File file = new File("File.txt");
System.out.println("文件名:" + file.getName());
System.out.println("路径名:" + file.getPath());
System.out.println("绝对路径:" + file.getAbsolutePath());
System.out.println("获取父目录路径字符串(没有返回null):" + file.getParent());
System.out.println("最后一次修改时间:" + file.lastModified());
}
7、搜索文件
在src下创建一个newDir文件夹,然后放入不同类型的文件进行测试
public static void test10(){
File file = new File("newDir");
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
String str = files[i].getName();
if (files[i].isFile()) {
System.out.println(files[i] + "---是一个文件");
}else {
System.out.println(files[i] + "---是一个文件夹");
}
}
}
8、过滤文件
/**
* 用系统提供的方法过滤文件
*/
public static void test11(){
File file = new File("newDir");
File files[] = file.listFiles(new FileFilter() {
/**
* 实现accept()方法
*/
@Override
public boolean accept(File pathname) {
if (pathname.getName().endsWith("txt")) {
return true;
}
return false;
}
});
for (int i = 0; i < files.length; i++) {
System.out.println(files[i].getName());
}
}