File类

9 篇文章 0 订阅
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();
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值