1.使用File访问一个文件或目录的属性信息
long length = file.length();——> 当前File对象所表示的文件所占用的字节量
package day04;
import java.io.File;
/**
* test.txt
* java.io.File
* File表示操作系统中文件系统里的一个文件或目录
* 使用File可以:
* 1:访问一个文件或目录的属性信息
* 2:操作一个文件或目录(创建,删除)
* 3:访问一个目录的子项
* 但是不能使用File访问文件数据。
* @author soft01
*
*/
public class FileDemo {
public static void main(String[] args) {
/*
* 在创建File的时候书写路径尽量使用相对路径。避免平台差异性。
* 目录层级分隔符应当使用File提供的一个常量:File.separator
*
* 常见的相对路径:
* 1".":表示当前目录,当前目录视运行环境不同路径也不同。
* 在eclipse中运行java程序时的当前目录是当前类所在项目的根目录
* 2类加载路径
*/
File file = new File("."+File.separator+"test.txt");
String name = file.getName();
System.out.println(name);
long length = file.length();
System.out.println(length);
boolean canRead =file.canRead();//可读
boolean canWrite =file.canWrite();//可写
System.out.println("可读:"+canRead);
System.out.println("可写:"+canWrite);
boolean isHidden = file.isHidden();
System.out.println("是否为隐藏文件:"+isHidden);
}
}
2.使用File创建一个新文件(文件创建在你的项目文件里面)
package day04;
import java.io.File;
import java.io.IOException;
/**
* 使用File创建一个新文件
* @author soft01
*
*/
public class File_createNewFile {
public static void main(String[] args) throws IOException {
/*
* 在当前目录下创建一个名为demo.txt的文件
*/
File file = new File("."+File.separator+"demo.txt");
/*
* boolean exists()
* 判断当前File表示的文件或目录是否真实存在
*/
if(!file.exists()) {
//创建该文件
file.createNewFile();
System.out.println("该文件创建完毕!");
}else {
System.out.println("该文件已存在!");
}
}
}
3.使用File创建一个新文件目录
file.exists()——> 判断该名字命名的文件或目录是否存在
package day04;
import java.io.File;
/**
* 创建一个目录
* @author soft01
*
*/
public class File_mkdir {
public static void main(String[] args) {
/*
* 在当前目录中创建一个名为demo的目录
*/
File dir = new File("demo");
if(!dir.exists()) {
dir.mkdir();
System.out.println("创建完毕!");
}else {
System.out.println("该目录已存在!");
}
}
}
4.使用File创建一个多级目录a/b/c/d/e/f
package day04;
import java.io.File;
/**
* 创建一个多级目录
* @author soft01
*
*/
public class File_mkdirs {
public static void main(String[] args) {
/*
* 在当前目录中创建
* a/b/c/d/e/f
*/
File dir = new File("a"+File.separator+
"b"+File.separator+"c"+File.separator+
"d"+File.separator+"e"+File.separator+"f");
if(!dir.exists()) {
/*
* mkdirs是在创建当前File表示的目录
* 同时将该目录其上的所有不存在的父目录一同创建出来
*/
dir.mkdirs();
System.out.println("创建完毕!");
}else {
System.out.println("该目录已存在!");
}
}
}
5.使用File删除一个文件
file.delete();——> 删除文件
package day04;
import java.io.File;
/**
* 删除一个文件
* @author soft01
*
*/
public class File_delete {
public static void main(String[] args) {
/*
* 将当前目录中的demo.txt文件删除
* 相对路径默认是从“当前目录”开始
* 所以
* new File("demo.txt")
* 等同
* new File("./demo.txt)
*/
File file = new File("demo.txt");
if(file.exists()) {
file.delete();
System.out.println("删除完毕!");
}else {
System.out.println("该文件不存在!");
}
}
}
6.使用File删除一个目录
package day04;
import java.io.File;
/**
* 删除一个目录
* @author soft01
*
*/
public class File_delete2 {
public static void main(String[] args) {
/*
* 将当前目录的demo目录删除
*/
File dir = new File("demo");
if(dir.exists()) {
/*
* delete方法在删除目录的时候需要注意,只能删除空目录。
*/
dir.delete();
System.out.println("目录已删除!");
}else {
System.out.println("该目录不存在!");
}
}
}
7.使用File获取一个目录中的所有子项
boolean isFile()——> 判断当前File表示的是否为一个文件
boolean isDirectory()——> 判断当前File表示的是否为一个目录
package day04;
import java.io.File;
/**
* 获取一个目录中的所有子项
* @author soft01
*
*/
public class File_listFiles {
public static void main(String[] args) {
/*
* 获取当前目录中的所有子项
*/
File dir = new File(".");
/*
* boolean isFile()
* 判断当前File表示的是否为一个文件
*
* boolean isDirectory()
* 判断当前File表示的是否为一个目录
*/
if(dir.isDirectory()) {
/*
* File[] listFiles()
* 获取当前目录中的所有子项
*/
File[] subs = dir.listFiles();
System.out.println("subs:"+subs);
for(int i=0;i<subs.length;i++) {
File sub = subs[i];
if(sub.isDirectory()) {
System.out.print("目录:");
}
if(sub.isFile()) {
System.out.print("文件:");
}
System.out.println(sub.getName());
}
}
}
}
8.使用File获取一个目录中的符合条件的子项
package day04;
import java.io.File;
import java.io.FileFilter;
/**
* File提供了一个重载的listFiles方法
* 该方法允许我们传入一个文件过滤器FileFilter
* 该方法会将File表示的目录中所有满足过滤器要求的子项返回,
* 而不满足的则被忽略。
* @author soft01
*
*/
public class File_listFiles2 {
public static void main(String[] args) {
/*
* 获取当前目录中所有名字以"."开头的子项
*/
File dir = new File(".");
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
String name = file.getName();
System.out.println("正在过滤子项;"+name);
return name.startsWith(".");
}
};
File[] subs = dir.listFiles(filter);
for(int i=0;i<subs.length;i++) {
System.out.println(subs[i].getName());
}
}
}
/*class MyFilter implements FileFilter{
public boolean accept(File file) {
String name = file.getName();
System.out.println("正在过滤子项;"+name);
return name.startsWith(".");
}
}*/
9.使用File删除给定的File表示的文件或目录
package day04;
import java.io.File;
/**
* 练习:删除给定的File表示的文件或目录
* @author soft01
*
*/
public class Test01 {
public static void main(String[] args) {
File dir = new File("a");
delete(dir);
}
public static void delete(File f) {
if(f.isDirectory()) {
//先将该目录中所有子项删除
File[] subs = f.listFiles();//获取当前目录的所有子项
System.out.println(subs);
for(int i=0;i<subs.length;i++) {
File sub = subs[i];
delete(sub);//递归调用
}
}
f.delete();
}
}