java学习——File类

一、使用File创建一个文件

public static void main(String[] args) throws IOException {
		/*
		 * 在当前目录下创建test.txt文件
		 */
		File file = new File("./test.txt");
		/*
		 * boolean exists()
		 * 判断当前file表示的文件或者目录是否存在
		 */
		if(!file.exists()) {
		/*
		 * 将当前File表示的文件创建出来
		 */
			file.createNewFile();
			System.out.println("文件已创建成功");
		}else {
			System.out.println("文件已存在");
		}

	}

二、创建一个目录

public static void main(String[] args) {
		/*
		 * 在当前目录创建一个目录:Demo
		 * 
		 */
		File dir = new File("demo");
		if(!dir.exists()) {
			dir.mkdir();
			System.out.println("目录已创建!");
		}else {
			System.out.println("目录已存在");
		}
	}

三、创建一个多级目录

	public static void main(String[] args) {
		/*
		 * 在当前目录下创建:a/b/c/d/e/f
		 */
		File dir = new File("a/e/d/e/f");
		/*
		 * mkdir在创建目录时要求其所在父目录必须存在
		 * mkdirs则会将所有不存在的父目录一同创建出来
		 */
		if(!dir.exists()) {
			dir.mkdirs();
			System.out.println("目录已创建");
		}else {
			System.out.println("目录已存在");
		}

	}

四、删除一个目录

public static void main(String[] args) {
		File dir = new File("a");
		if(dir.exists()) {
			/*
			 * 删除目录的前提条件,该目录必须是一个空目录
			 */
			dir.delete();
			System.out.println("删除完毕!");
		}else {
			System.out.println("目录不存在!");
		}
		

	}

五、删除一个文件

public static void main(String[] args) {
		/*
		 * 将当前目录下的test.txt文件删除
		 * 
		 * “./”不写,默认也是在当前目录中
		 */
		
		File file = new File("test.txt");
		if(file.exists()) {
			file.delete();
			System.out.println("文件已删除");
		}else {
			System.out.println("文件不存在");
		}

	}

六、File类相关属性

package file;

import java.io.File;

/**
 * java.io.File
 * File的每一个实例用于表示文件系统(硬盘中)上的一个文件或目录
 * 使用File可以:
 * 1:访问属性信息(名字,长度,修改信息等)
 * 2:操作文件或目录(创建,删除)
 * 3:获取一个目录的子项
 * 但不能访问文件数据
 * @author Administrator
 *
 */
public class FileDemo {

	public static void main(String[] args) {
		/*
		 * File没有无参构造方法,需要传入一个字符串,
		 * 该字符为绝对路径。注意,路径通常不会使用绝对路径
		 * 因为不同系统的绝对路径定义不同,会出现跨平台问题
		 * 相对路径的好处在于不存在跨平台的问题,但是相对路径
		 * 通常由运行环境而定。实际开发中比较常使用的是类加载路径
		 * 在exclipse中,通常相对“当前目录”,当前目录值得是当前程
		 * 序所在项目的项目目录。
		 */
		File file = new File("./demo.txt");
		System.out.println(file);
		/*
		 * 获取名字
		 */
		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);

	}

}

七、获取一个目录中的所有子项

package file;
import java.io.File;
/**
 * 获取一个目录中的子项
 * @author Administrator
 *
 */
public class ListFilesDemo {

	public static void main(String[] args) {
		/*
		 * 获取当前目录中的所有子项
		 */
		File dir = new File("a");
		
		/*
		 * boolean isFile()
		 * 判断当前file是否表示的是文件
		 * 
		 * boolean isDirectory()
		 * 判断是否表示的是目录
		 */
		if(dir.isDirectory()) {
			//获取当前目录中所有子项
			File[] subs = dir.listFiles();
			System.out.println(subs.length);
			for(int i=0;i<subs.length;i++) {
				System.out.println(subs[i].getName());
			}
		}
		delete(dir);

	}
	public static void delete(File file) {
/*		
		 * 首先判断该file是文件还是目录
		 * 若是目录,要先将所有子项删除(清空该目录)
		 * 然后再将该目录删除。
		 * 若是文件直接删除*/
		if(file.isDirectory()) {
			//先清空该目录
			//获取该目录所有子项
			File[] subs = file.listFiles();
			for(int i=0;i<subs.length;i++) {
				File sub = subs[i];
				delete(sub);
				
/*				 * 递归调用
				 * 在当前方法内部再次调用,当前方法的现象
				 * 成为递归调用
				 * 在开发中能不用就不用*/
			}
		}
		file.delete();	
	}
	
/*	public static void delete(File file) {
		if(file.isDirectory()) {
			File[] subs = file.listFiles();
			
		}
	}*/
}	

八、获取一个目录中满足条件的子项

package file;

import java.io.File;
import java.io.FileFilter;

/**
 * File提供了一个重载的ListFiles方法,可以传入一个文件过滤器,然后将其表示
 * 的目录满足过滤器要求的子项返回
 * @author Administrator
 *
 */
public class ListFilesDemo2 {

	public static void main(String[] args) {
		File dir = new File(".");
		/*
		 * 获取当前目录中所有名字以"."开头的子项
		 */
		FileFilter filter = new FileFilter() {
			public boolean accept(File dir) {
				return dir.getName().startsWith(".");
			}
		};
		
//		FileFilter filter = new FileFilter() {
//			public boolean accept(File dir) {
//				return dir.isFile();
//			}
//		};
		File[] subs = dir.listFiles(filter);
		for(int i=0;i<subs.length;i++) {
			System.out.println(subs[i].getName());
			
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值