java.io.File
File表示一个抽象路径,简单的理解为可以访问文件系统中的一个文件或目录。
使用File我们可以:
* 1:访问其表示的文件或目录的属性信息(名字,大小,修改时间等)。
* 2:可以操作文件或目录(创建,删除)。
* 3:可以访问一个目录中的所有子项。
但是不能访问一个文件里面的数据。
1.读取文件信息的相关方法
package file;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
/*
* 访问项目目录下的test.txt文件
* 在使用路径时,通常我们都使用相对路径,因为
* 绝对路径的指向太明确,导致的问题是不可变动,
* 那么在跨平台时会出现很多问题。
* 相对目录比较灵活,但是要清楚相对的路径是哪里,
* 而相对的路径要基于程序的运行环境而定。对于我们
* 现在都是在eclipse中运行程序而言,那么其表示的
* "当前目录"就是当前程序所在的项目目录。
*/
File file = new File("./test.txt");
String name = file.getName();//获取文件名
System.out.println(name);
long length = file.length();//获取文件大小
System.out.println(length+"字节");
boolean cr = file.canRead();//获取文件的可读状态
boolean cw = file.canWrite();//获取文件的可写状态
System.out.println("可读:"+cr);
System.out.println("可写:"+cw);
boolean ih = file.isHidden();//获取文件的隐藏状态
System.out.println("是否隐藏:"+ih);
/* getAbsolutePath得到的是全路径。
* 如果构造参数是相对路径,则返回当前目录的绝对路径+构造参数路径;
* 如果是绝对路径则直接返回
*/
String path = file.getAbsolutePath();
System.out.println(path);
}
}
2. 判断文件是否存在:exists() 、创建一个新文件:createNewFile()
package file;
import java.io.File;
import java.io.IOException;
/**
* 使用File创建一个新文件
* @author adminitartor
*/
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
/*
* 在项目目录下创建一个名为:demo.txt的文件
* 1:先创建一个File表示该文件
* 2:判断该文件是不存在的
* 3:创建该文件
*/
//1
File file = new File("./demo.txt");
//2
if(!file.exists()){
file.createNewFile();
System.out.println("文件已创建!");
}else{
System.out.println("文件已存在!");
}
}
}
3.删除一个文件:delete()
package file;
import java.io.File;
/**
* 删除一个文件
* @author adminitartor
*/
public class DeleteFileDemo {
public static void main(String[] args) {
/*
* 将当前目录中的demo.txt文件删除
*/
File file = new File("./demo.txt");
if(file.exists()){
file.delete();
System.out.println("文件已删除!");
}else{
System.out.println("文件不存在!");
}
}
}
4.创建一个目录:mkdir()
package file;
import java.io.File;
/**
* 创建一个目录
* @author adminitartor
*/
public class MkDirDemo {
public static void main(String[] args) {
/*
* 在项目目录下创建一个名为:demo的目录
*
* 在相对路径中"./"可以忽略不写,默认就是从当前
* 目录开始
*/
// File dir = new File("./demo");
File dir = new File("demo");
if(!dir.exists()){
dir.mkdir();
System.out.println("目录已创建!");
}else{
System.out.println("目录已存在!");
}
}
}
5.创建一个多级目录:mkdirs()
package file;
import java.io.File;
/**
* 创建一个多级目录
* @author adminitartor
*/
public class MkDirsDemo {
public static void main(String[] args) {
/*
* 在当前目录下创建目录:a/b/c/d/e/f
*
* mkdir在创建目录时要求其所在的父目录必须存在
* 否则创建不成功,而mkdirs则会将所有不存在的父
* 目录自动创建出来。
*/
File dir = new File("a/b/c/d/e/f");
if(!dir.exists()){
dir.mkdirs();
System.out.println("创建完毕!");
}else{
System.out.println("目录已存在!");
}
}
}
6.访问一个目录中的所有子项:listFiles()
package file;
import java.io.File;
/**
* 访问一个目录中的所有子项
* @author adminitartor
*/
public class ListFilesDemo {
public static void main(String[] args) {
/*
* 获取当前目录中的所有子项
*/
File dir = new File(".");
/*
* boolean isFile()
* 判断当前File表示的是否为一个文件
*
* boolean Directory()
* 判断当前File表示的是否为一个目录
*/
if(dir.isDirectory()) {
//获取所有子项
File[] subs = dir.listFiles();
for(int i=0;i<subs.length;i++){
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
7.重载的listFiles()方法,可以传入一个文件过滤器
package file;
import java.io.File;
import java.io.FileFilter;
/**
* File提供了一个重载的listFiles方法,可以传入一个文件
* 过滤器,然后只将该目录中满足过滤器要求的子项返回。
* @author adminitartor
*/
public class ListFilesDemo2 {
public static void main(String[] args) {
/*
* 获取项目目录下所有名字是以"."开头的子项
*/
File dir = new File(".");
// FileFilter filter = new MyFilter();
/*
* 使用匿名内部类形式创建文件过滤器
* 过滤条件为:只获取文件。
*/
FileFilter filter = new FileFilter(){
public boolean accept(File file) {
return file.isFile();
}
};
File[] subs = dir.listFiles(filter);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
}
8.删除目录:delete()
package file;
import java.io.File;
/**
* 删除目录
* @author adminitartor
*/
public class DeleteDirDemo {
public static void main(String[] args) {
/*
* 删除项目目录下的demo目录
* delete方法在删除目录时有一个前提条件,即:
* 目录必须是一个空目录才可以删除
*/
File dir = new File("demo");
if(dir.exists()){
dir.delete();
System.out.println("目录已删除");
}else{
System.out.println("目录不存在!");
}
}
}