File类

废话不多说, File类主要是掌握它的方法,直接上案例

案例一:常用方法1

/**
 * 概述:
 * 	   路径(path): 计算机中的一个位置,可以是文件,也可以是文件夹
 * 				File类就表示计算机中的文件或者文件夹
 * 
 * 测试路径: D:\TestFile\helloWorld.txt
 * 
 * 
 * @author 王XX
 *
 */
public class Demo {

	public static void main(String[] args) throws Exception {
		
		一:File的构造方法/
		
		/**
		 * 对象是一个实实在在的个体,是指这个对象已经在内存中创建了,而不是说真的存在于现实世界中!!
		 * 在这里你不要理解为,不是说对象是一个实实在在的个体吗?
		 * 那我File file = new File("D:\\TestFile\\helloWorld.txt"); 不就是创建了一个对象
		 * 那我file.exists(); 它怎么不存在呢?【前提:在你电脑没有该文件时】  注意不要混淆了概念,
		 * 那如果按照这样理解,我还 new ATM(); 那我现实中不就有了,哈哈哈
		 */
		File file = new File("D:\\TestFile\\helloWorld.txt");
		System.out.println(file); // D:\TestFile\helloWorld.txt
		System.out.println(file.getAbsolutePath()); // D:\TestFile\helloWorld.txt
		
		/**
		 * File类的构造方法
		 * 1.File(File parent, String child): parent(目录)和child(文件) , 中间自动会用\来连接
		 * 2.File(String parent, String child):  中间自动会用/来连接,你D:\\TestFile(第一个参数) 后加不加\,该构造都会加上
		 * 3.File(String pathname): 上面第一个
		 * 4.File(java.net.URI uri)  
		 */
		File file2 = new File(new File("D:\\TestFile\\"), "helloWorld.txt");
		System.out.println(file2.getAbsolutePath()); // D:\TestFile\helloWorld.txt
		
		File file3 = new File("D:\\TestFile", "helloWorld.txt");
		System.out.println(file3.getAbsolutePath()); // D:\TestFile\helloWorld.txt
		
		/**
		 * 注意点:
		 * 		1.new File("hello.txt") 是相对路径(不带盘符的都是), 这里是相对于项目下
		 * 		2.有时候你会遇到一种奇怪的现象:
		 * 			明明该文件的路径是一模一样的,但就是说不存在,
		 * 			报错误:D:\TestIo\copy\HelloWorld.txt (文件名、目录名或卷标语法不正确。)
		 * 		          解决办法: 重新复制一下路径就好了
		 * 
		 * 		new File("D:\\TestIo\\copy\\HelloWorld.txt").exists(); 
		 *		
		 * 		
		 */
		///二:File的常用方法///
		
		System.out.println(file.exists()); //判断该文件是否存在在硬盘上
		
		
		/**
		 * 之前还以为如果该文件设置了只读属性才返回true, 补充:只读方法是它setReadOnly() 
		 * 后来通过查看文档才知,只有该文件存在且 可被应用程序读取时才返回true
		 * 作用类似于exists()方法
		 */
		System.out.println(file.canRead());
		
		File file4 = new File("D:\\TestFile\\helloWorld1.txt");
		
		/**
		 * 之前以为createNewFile创建完文件之后,再运行一遍就是覆盖了,还是不能想当然啊 !!!
		 * 它是检查文件在该目录下是否存在,若不存在则创建该文件!!
		 * 
		 */
		System.out.println(file4.createNewFile());
		
		//获取文件(包括文件&文件夹)名
		System.out.println(file4.getName());//helloWorld1.txt
		
		//判断该文件(包括文件&文件夹)是否是文件
		System.out.println(file4.isFile());//true
		
		//判断该文件(包括文件&文件夹)是否是文件夹
		System.out.println(file4.isDirectory());//false
		
		//判断文件(包括文件&文件夹)是否有隐藏属性,listFiles()类似方法,也可以捕捉隐藏文件
		System.out.println(file4.isHidden());
		
		
		///三:File的增删改查方法
		File file5 = new File("D:\\hello\\world\\java.txt");
		/**
		 * java.io.IOException: 系统找不到指定的路径。
		 * 说明调用createNewFile()时,该文件的所在目录必须存在!!!
		 */
		System.out.println(file5.createNewFile());
		
		//创建一级目录
		System.out.println(file5.mkdir());
		//创建多级目录,就算不存在也可以创建出来
		System.out.println(file5.mkdirs());
		
		//删除成功返回true
		System.out.println(file5.delete());
		
		/**
		 * renameTo();
		 * srcFile: 源文件
		 * destFile: 目标文件
		 * 	如果srcFile 和  destFile路径一致,就是改名,
		 * 	如果srcFile 和  destFile路径不一致,就是剪切+改名!!!
		 */
		System.out.println(file5.renameTo(new File("hello.txt")));
		
		//查看文件的最后修改时间
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String lastMofidy = sdf.format(new Date(file5.lastModified()));
		System.out.println(file5.getName()+"最后修改时间: "+lastMofidy);
		
		//修改文件的最后修改时间
		file5.setLastModified(new Date().getTime());


        		//并不一定是指决定路径 !!!
		/**
		 * 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
		 * 意思是说 File("XXX")的必须包含了父级目录!!!
		 * 
		 * 例子:File old = new File("TestIO_9");
		 * File parent = old.getParentFile();//null
		 * 
		 * 例子:File old = new File("D:\\wzj\\hello.txt");
		 * File parent = old.getParentFile();
		 * System.out.println(parent.getName());//wzj
		 * 
		 * 对应的有:String getParent();
		 */
		File old = new File("shan\\TestIO_9");
		File parent = old.getParentFile();
		System.out.println(parent.getName());//shan

        
        /**
		 * 创建临时文件,是File类静态方法,在学习RandomAccessFile类时用的上
		 * File.createTempFile("tmp", null);
		 * 
		 * 与之一般匹配使用的还有:public void deleteOnExit()
		 * 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
		 * 
		 * 在这里我就不过多演示了。。
		 */
	}
}

案例二:常用方法2

public class Demo2 {
	public static void main(String[] args) {
		// 场景: D:\\TestFile 只有一个helloWorld.txt
		File file4 = new File("D:\\TestFile");

		// 将该文件下的文件名[包括文件夹名]作为字符串存入String[]中返回
		String[] pathStr = file4.list();
		System.out.println(Arrays.toString(pathStr)); // [helloWorld.txt]

		// 将该文件下的文件名[包括文件夹名]封装成一个File对象,存入File[]中返回
		File[] files = file4.listFiles();
		System.out.println(Arrays.toString(files)); // [D:\TestFile\helloWorld.txt]

		File[] fileArray = file4.listFiles(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				System.out.println(dir);// 是目录本身
				System.out.println(name);// 是目录下的文件(含文件夹),注意是String类型的
				/**
				 * 这个其实可以转换为下面这种形式,所以一般推荐它,比较灵活 new File(dir,name);
				 */
				return false;
			}
		});

		file4.listFiles(new FileFilter() {

			@Override
			public boolean accept(File pathname) {
				System.out.println(pathname);// 是目录下的文件(含文件夹),注意是File类型的
				return false;
			}
		});

		// 跟上面类似,只不过返回的是String[]!!!
		String[] list = file4.list(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				return false;
			}
		});
	}
}

案例三:举例子

/**
 * 案例: 输出指定的目录下的指定后缀名的文件
 * 		例如: 输出D:\TestIo目录下以.java结尾的文件 (注意是文件名,不是目录名)
 * 
 * 
 * @author 1
 *
 */
public class Demo3_Final
{
	
	public static void main(String[] args)
	{
		/**
		 * 方式一: 先获取所有的,然后遍历,依次判断,如果满足条件就输出
		 * 		举个栗子: 一个公司招人,先把来应聘的人,叫到大厅,叫他们拿出毕业证
		 * 		      	一个一个看,如果是本科以上的学历的就满足条件,专科的则不要 
		 * 
		 * 方式二: 先过滤掉不满足条件的,剩下在数组里面的文件都是满足的
		 * 		举个栗子: 还是一个公司招人,首先的要求就是本科学历以上,然后招的人
		 * 				全是本科以上学历
		 * 
		 * 最终公司的人都是本科以上学历,两种方式都可以采用,看自己用哪种 
		 */
        //方式一
//		File file = new File("D:\\TestIo");
//		File[] fileArray = file.listFiles();
//		
//		for (File f : fileArray) 
//		{
//			if(f.isFile() && f.getName().endsWith(".java"))
//			{
//				System.out.println(f.getName());
//			}
//		}


		//方式二
		File file = new File("D:\\TestIo");
		File[] fileArray = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				
				return new File(dir, name).isFile() && name.endsWith(".java");
			}
		});
		
		for (File f : fileArray) {
			System.out.println(f.getName());
		}
	}
}

如上基本概况的File类常用的方法!!

最后有什么写的不好的,希望各位可以不吝指出

觉得对你有帮助的,想打赏的可以打赏一下,哈哈哈,多少无所谓,这也是对我一种支持与鼓励吗,最后不喜勿喷

有志同道合的小伙伴可以加QQ群讨论:897992110

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值