File类常用方法详解

最近在学习IO流有关的知识,在学流之间先学了一下关于File类的一些常用方法。

首先说一下File的三个构造方法,下边的三种构造方法效果都是相同的,都是得到file对象。其中第二个和第三个构造方法的区别在于参数类型的不同,第二个构造方法的第一个参数是String类型,第三个构造方法第一个是File对象,这两个都代表的是第二个参数的父目录。

//第一种 File(String pathname):根据一个路径得到File对象
File file = new File("E:\\demo\\a.txt");
//第二种 File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File file2 = new File("E:\\demo", "a.txt");
//第三种 File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
File file3 = new File("e:\\demo");
File file4 = new File(file3, "a.txt");

下面是创建file:

package com.lqt;

import java.io.File;
import java.io.IOException;
/**<strong>
 * c</strong>reateNewFile()是直接创建文件
 * mkdir()是创建一个文件夹,但是不能直接创建二级文件夹
 * mkdirs()也是直接创建文件夹,但是他同时可以创建多级目录,但是请注意,他只能创建文件夹不能直接创建文件
 * 
 * 注:以上三个方法的返回类型都是boolean,创建成功返回true,不成功返回false
 */<strong>
</strong>public class FileToCreate {
	public static void main(String[] args) throws IOException {
		File file1 = new File("f:\\1.txt");
		System.out.println("careateNewFile:"+file1.createNewFile());
		
		File file2 = new File("f:\\aa");
		System.out.println("mkdir:"+file2.mkdir());
		
		File file3 = new File("f:\\bb\\cc");
		System.out.println("mkdir:"+file3.mkdir());
		
		File file4 = new File("f:\\111\\222\\333");
		System.out.println("mkdir:"+file4.mkdirs());
		
		
		File file5 = new File(file4, "1.txt");
		System.out.println("createNewFile1:"+file5.createNewFile());
		
		File file6 = new File("f:aaa\\1.txt");
		System.out.println("mkdirs:"+file6.mkdirs());//注意此时创建的只是一个名字叫做1.txt的文件夹,不是文件
	}
}<strong>
</strong>

 

删除

package com.lqt;

import java.io.File;
/**
 * delete()的返回值依然是boolean
 * 他既可以删除文件也可以删除文件夹,但是当删除文件夹时,必须保证文件夹下没有任何子文件或子文件夹擦能删除
 * delete3中在目录222下还有一个别的文件夹存在,所有返回flase,删除失败
 */
public class FileToDelete {
	public static void main(String[] args) {
		File file6 = new File("f:\\1.txt");
		System.out.println("delete1:"+file6.delete());
		
		File file7 = new File("f:\\aa");
		System.out.println("delete2:"+file7.delete());
		
		File file8 = new File("f:\\111\\222");
		System.out.println("delete3:"+file8.delete());
	}
}

 

重命名:

package com.lqt;

import java.io.File;
/**
 * 在重命名时需要取到想要重命名的File对象,如下例的file9,之后定义要给他重新的名字如file10
 * 有一点需要大家注意,当想要重命名的对象与重命名之后的对象不再相同的路径中时,系统采用的是剪切的效果
 * file11就是将2.txt剪切到了d盘下,并且重命名为3.txt
 */
public class FileToRename {
	public static void main(String[] args) {
		File file9 = new File("f:\\1.txt");
		File file10 = new File("f:\\2.txt");
		System.out.println("renameTo1:"+file9.renameTo(file10));
		
		File file11 = new File("d:\\3.txt");
		System.out.println("renameTo1:"+file10.renameTo(file11));
	}
}
判断:在我们平常做项目时,有事需要判断某些条件,以下为一些常用的
package com.lqt;

import java.io.File;
/**
 * 判断是否隐藏、可读、可写时,大家可以去文件夹的高级选项中去设置问价的属性,设置成只读之类的
 *
 */
public class FileToIS {
	public static void main(String[] args) {
		File file12 = new File("f:\\3.txt");
		System.out.println("isDirectory:"+file12.isDirectory());//判断是否是文件夹(目录)
		System.out.println("isFile:"+file12.isFile());//判断是否是
		System.out.println("isHidden:"+file12.isHidden());//判断是否隐藏
		System.out.println("canRead:"+file12.canRead());//判断是否可读
		System.out.println("canWrite"+file12.canWrite());//判断是否可写
		System.out.println("exists:" + file12.exists());//判断是否存在
	}
}<strong style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></strong><div style="display: inline !important;"><strong> </strong></div>

得到

package com.lqt;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 需要注意的是,在获取最后一次更改时间时,返回值是long类型的,所以想得到准确的时间还需要对其进行转换
 */
public class FileToGet {
	public static void main(String[] args) {
		File file = new File("f:\\3.txt");
		System.out.println("getAbsolutePath:"+file.getAbsolutePath());//获取绝对路径
		System.out.println("getPath:"+file.getPath());//获取相对路径
		System.out.println("getName:"+file.getName());//获取名字
		System.out.println("length:"+file.length());//获取文件字节数
		System.out.println("lastModified:"+file.lastModified());//获取最后一次更改时间
		
		Date date = new Date(file.lastModified());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		String string = sdf.format(date);
		System.out.println(string);
	}
}

 

获取某个位置所有的文件

package com.lqt;

import java.io.File;
/**
 * 获取f盘下所有文件
 * 共有两种方法:list()和listFiles(),他们的区别在于返回值一个是string[],一个是file[]
 */
public class FileToList {
	public static void main(String[] args) {
		File file = new File("f:\\");
		String[] strings = file.list();
		for(String s : strings){
			System.out.println(s);
		}
		
		File[] files = file.listFiles();
		for(File file2 : files){
			System.out.println(file2);
		}
	}
}
要想获取到某个目录下所有文件,用上边的两个方法都可以,但是当你想要过滤某些条件时,不得不使用file对象时,就体现出了他们的区别,如下个例子想要取出f盘下所有.txt文件,就需要使用file对象来处理
listDemo
package com.lqt;

import java.io.File;

public class FileToListDemo {
	public static void main(String[] args) {
		File file = new File("f:\\");
		File[] files = file.listFiles();
		
		for(File file2 : files){
			if(file2.isFile()){
				if(file2.getName().endsWith(".txt")){//判断是否以.txt结尾
					System.out.println(file2);
				}
			}
		}
	}
}







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值