package com.mipo.file;
import java.io.File;
import java.io.IOException;
/**
* File类对象既可以代表一个文件,也可以代表一个目录。根据构造方法不同,创建的对象可以是文件,也可以是目录
* File类定义了一些与平台无关的方法对文件进行操作,如建立,删除,查询,重命名等
* public File(String path)
如果path是实际存在的路径,则该File对象表示的是目录
如果path是文件名,则该File对象表示的是文件
public File(String path,String name)
path是路径名,name是文件名
public File(File dir,String name)
dir是路径名,name是文件名
* @author Administrator
*
*/
public class TestFile {
public static void main(String[] args) {
FileAttributeTest();
FileOperateTest();
}
//File类中常用的访问属性的方法*************************************
public static void FileAttributeTest() {
//把存储介质中指定路径中的文件抽象成File类对象
//D:\\Personal\\Desktop\\IO\\File\\demo\\readme.txt 表示文件
//D:\\Personal\\Desktop\\IO\\File\\demo 表示目录
File file = new File("D:\\Personal\\Desktop\\IO\\File\\demo\\readme.txt");//路径分隔符:在Windows系统上为‘\\’;在UNIX系统上为‘/’
System.out.println("文件或目录是否存在:"+file.exists());
System.out.println("是文件么:"+file.isFile());
System.out.println("是目录么:"+file.isDirectory());
System.out.println("名称:"+file.getName());
System.out.println("路径:"+file.getPath());
System.out.println("绝对路径:"+file.getAbsolutePath());
System.out.println("该文件的上一级目录名:"+file.getParent());
System.out.println("最后修改时间:"+file.lastModified());
System.out.println("文件大小:"+file.length()+"字节");
System.out.println("是否可读:"+file.canRead());
System.out.println("是否可写:"+file.canWrite());
}
//文件操作演示**************************************************
public static void FileOperateTest() {
File dir1 = new File("D:\\Personal\\Desktop\\IO\\File\\demo\\dir1");
//如果D:\\Personal\\Desktop\\IO\\File\\demo\\test不存在,就创建为目录
if(!dir1.exists()) {
dir1.mkdir();//创建此抽象路径名指定的目录
}
//创建以dir1为父目录,名为"dir2"的File对象
File dir2 = new File(dir1,"dir2");
if(!dir2.exists()) {
dir2.mkdirs();//创建此抽象路径名指定的目录,包括所有必须但还不存在的父目录
}
File dir4 = new File(dir1,"dir3\\dir4");
if(!dir4.exists()) {
dir4.mkdirs();
}
//创建以dir2为父目录,名为“test.txt”的File对象
File file = new File(dir2,"test.txt");
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(dir1.getAbsolutePath());//输出dir1的绝对路径名
listChilds(dir1,0);//递归显示dir1下的所有文件和目录信息
deleteAll(dir1);//删除目录
}
//递归显示指定目录下的所有文件和目录信息,level用来记录当前递归的层次
public static void listChilds(File dir,int level) {
//生成有层次感的空格
StringBuilder sb = new StringBuilder("|--");
for(int i = 0;i < level;i++) {
sb.insert(0, "| ");
}
File[] childs = dir.listFiles();//返回此目录中的文件和目录的File实例数组
//递归出口
int length = (childs == null ? 0 : childs.length);
for (int i = 0; i < length; i++) {
System.out.println(sb.toString() + childs[i].getName());
if (childs[i].isDirectory()) {
listChilds(childs[i],level+1);
}
}
}
//删除目录或文件,如果参数file代表目录,就删除当前目录以及目录下的所有内容
public static void deleteAll(File file) {
//如果file代表文件,就删除该文件
if (file.isFile()) {
System.out.println("删除文件:"+file.getAbsolutePath());
file.delete();
return;
}
//如果file代表目录,先删除目录下的所有子目录和文件
File[] lists = file.listFiles();//返回此目录下的文件和目录的File实例数组
for (int i = 0; i<lists.length; i++) {
deleteAll(lists[i]);//递归删除当前目录下的所有子目录和文件(先删文件,再删目录)
}
System.out.println("删除目录:"+file.getAbsolutePath());
file.delete();
}
}
File类
最新推荐文章于 2024-10-14 11:08:18 发布