Java实例——Java目录操作

转:https://www.runoob.com/java/java-examples.html

Java实例——Java目录操作

1、递归创建目录

file.mkdirs()——创建目录,返回boolean值
file.mkdir()——创建单个目录,多个不创建

		//递归创建目录
		File f1 =new File("D:/work/a/b/c/d/e/f.txt");
		File f2 =new File("D:/a.txt");

		f1.mkdirs();
		f2.mkdir();
执行结果:
D:\work\a\b\c\d\e\f.txt
D:\work\a.txt

2、删除目录

file.isDirectory()——是否为目录
file.isFile()——是否为文件
file.list()——返回文件名数组
file.listFiles()——返回文件路径名数组
file.delete()——删除单个文件或目录,从最外级开始

	//删除目录下的文件和文件夹
	private static boolean delete(File file) {//输出的必须是一个文件类型,也可以设置成字符串类型
		if(file.exists()) {//是否存在
			File[] files =file.listFiles();
			for(File f:files) {
				if(f.isFile()) {
					System.out.println(f.delete());
				}
				if(f.isDirectory()) {
					File fileother =new File(f.getPath());
					delete(fileother);
					System.out.println(f.delete());
				}
				System.out.println(f);
			}
		}else {
			return false;
		}
		return true;
	}
System.out.println(delete(new File("D:/work/aaa")));
执行结果:
true
D:\work\aaa\aa\a
true
D:\work\aaa\aa
true
D:\work\aaa\aa.txt
true
D:\work\aaa\bb
true
D:\work\aaa\cc
true
D:\work\aaa\dd
true

3、判断目录是否为空

file.list()——返回文件名数组;长度大于0则存在文件

		//判断目录是否为空
		File f1 =new File("D:/work/a.txt");
		if(f1.isDirectory()) {
			if(f1.list().length >0) {
				System.out.println("目录不为空!");
			}else {
				System.out.println("目录为空!");
			}
		}else {
			 System.out.println("这不是一个目录!");
		}
执行结果:
目录为空!

4、判断文件是否隐藏

file.isHidden()——文件是否隐藏

		//判断文件是否隐藏
		File f1 =new File("D:/work/a.txt");
		System.out.println(f1.isHidden());
执行结果:
true

//没有感觉隐藏的魅力,属性改为隐藏,就是文件或文件夹颜色浅了点,但是能够看到

5、获取目录大小

length()——获取文件大小
目录通过遍历得到总的长度

	private static double LongFile(File f2) {
		double size =0;
		if(f2.exists()) {
			File[] files =f2.listFiles();
			for(File f:files) {
				if(f.isFile()) {
					size =size + f.length();
					//System.out.println("length1="+size+f);
				}
				if(f.isDirectory()) {
					File fileother =new File(f.getPath());
					size =size +LongFile(fileother);
					//System.out.println("length2="+size+f);
				}
			}
			return size;
		}
		return 0;
	}
		File f1 =new File("D:/work/aaa/aaa.txt");
		System.out.println(f1.length());//文件大小:37个字节;
		File f2 =new File("D:/work/aaa");
		System.out.println(f2.length());
		System.out.println(LongFile(f2));
执行结果:
37
0
length1=37.0D:\work\aaa\aaa.txt       //37
length1=60.0D:\work\aaa\bbb.txt      //37+23
length1=60.0D:\work\aaa\ccc.txt       //37+23+0
length1=69.0D:\work\aaa\ddd.txt      //37+23+0+9
length1=193.0D:\work\aaa\employee.ser     //37+23+0+9+124
193.0

6、在指定目录中查找文件

file.list()——查找文件

		//在指定目录中查找文件
		File f2 =new File("D:/work/aaa");
		String[] f =f2.list();
		if(f ==null) {
			System.out.println("该目录不存在");
		}else {
			for (int i = 0; i < f.length; i++) {
                String filename = f[i];
                System.out.println(filename);
            }
		}
执行结果:
aaa.txt
bbb.txt
ccc.txt
ddd.txt
employee.ser

7、获取文件的上级目录

file.getParent()——获取文件的上级目录

		//获取文件的上级目录
		File f2 =new File("D:/work/aaa");
		System.out.println(f2.getParent());
执行结果:
D:\work

8、获取目录最后修改时间

file.lastModified()——获取目录的最后修改时间

9、打印目录结构

	private static void showDir(int index,File file) {
		for(int i=0;i<index;i++) 
			System.out.print('-');
		
			System.out.println(file.getName());		
			if(file.isDirectory()) {
				File[] fs =file.listFiles();
				for(File f :fs) {
					showDir(index + 4,f);
				}
		}
}
showDir(0,new File("D:/work/aaa"));
执行结果:
aaa
----aaa.txt
----bbb.txt
----ccc.txt
----ddd.txt
----employee.ser

10、遍历指定目录下的所有目录

//跟删除差不多

	//遍历指定目录下的所有目录
	private static void selectall(File file) {
		if(file.exists()) {
			File[] files =file.listFiles();
			for(File f:files) {
				if(f.isDirectory()) {
					File fileother =new File(f.getPath());
					selectall(fileother);
					System.out.println(f.getName());
				}
			}
		}
	}
//遍历指定目录下的所有目录
selectall(new File("D:/work/a"));
执行结果:
f.txt
e
d
c
b

11、输出指定目录下的所有文件

	//输出指定目录下的所有文件
	private static void selectFile(File file) {
			if(file.exists()) {
				File[] files =file.listFiles();
				for(File f:files) {
					if(f.isFile()) {
						System.out.println(f.getName());
					}
					if(f.isDirectory()) {
						File fileother =new File(f.getPath());
						selectFile(fileother);
					}
				}
			}
		}
		//输出指定目录下的所有文件
		selectFile(new File("D:/work/aaa"));
执行结果:
aaa.txt
aaa.txt
bbb.txt
ccc.txt
ddd.txt
employee.ser

12、在指定目录中查找文件

查找以字母 ‘b’ 开头的所有文件

	//在指定目录中查找文件
	private static void selectFileB(File dir) {
		FilenameFilter filter =new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
				return name.startsWith("b");
			}
		};
		File[] children =dir.listFiles(filter);//有缺陷,第一级目录下的目录不存在b,就被过滤掉了
		if(children == null) {
			 System.out.println("目录不存在或它不是一个目录");
		}else {
			for(File f:children) {
				if(f.isFile()) {
					System.out.println(f.getName());
				}
				if(f.isDirectory()) {
					System.out.println(f.getName());
					File fileother =new File(f.getPath());
					selectFileB(fileother);
					
				}
			}
		}	
	}
		//在指定目录中查找文件
		File dir =new File("D:/work/aaa");
		selectFileB(dir);
执行结果:
bb
bb.txt
bbb.txt

13、查看系统根目录

listRoots() 方法来输出系统所有根目录:

		//查看系统根目录
		File[] roots =File.listRoots();
		System.out.println("系统所有根目录:");
        for (int i=0; i < roots.length; i++) {
            System.out.println(roots[i].toString());
        }
执行结果:
系统所有根目录:
C:\
D:\
E:\

14、查看当前工作目录

使用 System 的 getProperty() 方法来获取当前的工作目录

		//查看当前工作目录
		String curDir = System.getProperty("user.dir");
        System.out.println("你当前的工作目录为 :" + curDir);
执行结果:
你当前的工作目录为 :D:\software\JAVA\Eclipse\eclipse-workspace\test-javatest

15、遍历目录

使用 File 类的 dir.isDirectory() 和 dir.list() 方法来遍历目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值