File 类 常用方法

import java.awt.Robot;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.Calendar;

import javax.swing.JOptionPane;

/**
 * File 类
 * 	对文件和文件夹进行操作的类
 * 		File不仅可以对真实文件盒文件夹进行操作,也可以对虚拟文件盒文件夹进行操作
 * 基本用法:
 * 	1.创建File对象		new File("filePath");
 * 	2.创建文件:			createNewFile();		返回boolean类型 表示是否创建成功 
 * 						* 只有在指定的目录下没有该文件时才会创建成功
 * 	3.创建目录:			
 * 						单层目录:file.mkdir();
 * 						多层目录:file.mkdirs();
 * 	4.判断一个文件目录是否存在  file.isDirectory();	
 * 	5. 一些常用判断				
 * 
 * */
public class TestFile {
	public static void main(String[] args)throws Exception{
		Function fun = new Function();
		//fun.file1();
		//fun.hundreddirectory();
		//fun.deleteDirectory();
		//fun.core();
		//fun.root();
		//fun.root2();
		//fun.filter();
		//fun.filter2();
		//fun.fileFilter();
		//fun.hidden();
//		File file = new File("e:\\");
//		fun.search(file, "飘尘.jar");
		File file = new File("C:\\Program Files\\Java\\jdk1.6.0_43\\src");
		fun.test(file);
		
	}
}
//File 类的基本用法
class Function{
	public void file1()throws Exception{
		//创建File对象
		File file = new File("D:\\files\\java\\A.java");		
		//当且仅当该目录下没有指定的文件时,则创建一个新的空文件 返回boolean类型 表示是否创建成功
		//如果该文件存在了,则不进行创建操作 返回false
		//System.out.println(file.createNewFile());
		
		//创建目录
		//System.out.println(file.mkdir());
		//创建文件夹以及文件
		if(file.isDirectory()){
			System.out.println("文件目录不存在");
			file.mkdirs();
			System.out.println("创建成功");
		}else{
			System.out.println("文件目录已经存在了 直接进行文件创建");
			file.createNewFile();
			JOptionPane.showMessageDialog(null, "完成");
		}	
	}
	//创建百层目录 并将A.class文件放到第10层中
	public void hundreddirectory()throws Exception{
		StringBuffer s = new StringBuffer();
		for(int i = 1;i<=100;i++){
			s.append(i);//目录名
			s.append("\\");//转义字符  D\\a\\b\\....
		}
		String ss = new String(s);
		File file = new File("d:\\"+ss);
		System.out.println(file.isDirectory());
		//System.out.println(file.mkdirs());
	}
	//删除文件目录
	public void deleteDirectory(){
		for(int i = 99;i>=0;i--){
			StringBuffer sbb = new StringBuffer();
			//每次删除一个文件夹的目录
			for(int j = 0;j<=i;j++){
				System.out.println(1);
				sbb.append(j);
				sbb.append("\\");
			}
			//指定删除的盘符根目录
			File ff = new File(new String("d:\\"+sbb));
			System.out.println(ff.getAbsolutePath());
			System.out.println(ff.delete());
		}
	}
	//常用判断
	public void core()throws Exception{
		//isFile(); 判断是不是一个文件
		File f = new File("D:\\files\\java\\A.java");
		System.out.println(f.isFile());
		//isDirectory();  判断是不是一个文件夹(目录)
		System.out.println(f.isDirectory());
		//exists();判断f这个对象是不是真实的(存在返回TRUE)
		System.out.println(f.exists());
		//getPath();返回一个FIle类型对象的相对路径
		System.out.println(f.getPath());
		//getAbsolutePath(); 返回File对象的绝对路径
		System.out.println(f.getAbsolutePath());
		//isHidden(); 是不是一个隐藏文件
		System.out.println(f.isHidden());
		//length();返回文件的大小  * 只有文件才有大小
		System.out.println(f.length());
		//移动或从命名一个文件或文件夹
		File file = new File("d:\\files\\java\\B.java");
		System.out.println(file.renameTo(new File("d:\\files\\java\\B.java")));
		//返回一个文件的最后修改时间
		long lon = file.lastModified();
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(lon);
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH)+1;
		int day = c.get(Calendar.DAY_OF_MONTH);
		
		int hour = c.get(Calendar.HOUR);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
		int week = c.get(Calendar.DAY_OF_WEEK);
		
		System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second);
	}
	//得到根目录下所有文件
	public void root(){
		File file = new File("d:\\");
		File[] files = file.listFiles();
		for(File f:files){
			System.out.println(f);
		}
	}
	//得到根目录下所有文件名以及绝对路径
	public void root2(){
		File file = new File("d:\\");
		File[] files = file.listFiles();
		if(files != null){
			for(File f:files){
				if(f.isFile()){
					System.out.println(f.getAbsolutePath());
				}else{
					System.out.println(f);
				}
			}
		}
	}
	//文件名过滤器
	public void filter(){
		File file = new File("e:\\新建文件夹\\");
		MyFilenameFilter mf = new MyFilenameFilter();
		String[] files = file.list(mf);
		for(String s:files){
			System.out.println(s);
		}
	}
	//匿名类+文件名过滤器
	public void filter2(){
		File file = new File("e:\\新建文件夹\\");
		String[] names = file.list(new FilenameFilter(){
			@Override
			public boolean accept(File file,String name){
				return name.toLowerCase().endsWith(".class") || name.toLowerCase().endsWith(".java");
			}			
		});
		for(String ss:names){
			System.out.println(ss);
		}
	}
	//对文件的过滤
	public void fileFilter(){
		File file = new File("e:\\");
		File[] files = file.listFiles(new FileFilter(){
			@Override
			public boolean accept(File file){
				return file.length()>1024;
			}
		});
		for(File f:files){
			System.out.println(f);
		}
	}
	//找出隐藏的文件
	public void hidden(){
		File file = new File("c:\\");
		File[] files = file.listFiles(new FileFilter(){
			@Override
			public boolean accept(File file){
				return file.isHidden();
			}
		});
		for(File f:files){
			System.out.println(f);
		}
	}
	//获得指定文件绝对路径 
	public static void search(File file,String name){		
		File[] files = file.listFiles();
		if(files != null){
			for(File f:files){
				if(f.isDirectory()){
					search(f,name);
				}else{
					if(f.getName().equals(name)){
						System.out.println(f.getAbsolutePath());
					}
				}
			}
		}
	}
	//查看下 jdk6.0_43 核心类库总共多少个类
	static int i;
	public static void test(File file){
		if(file.list() != null){
			File[] fi = file.listFiles(new FilenameFilter(){
				@Override
				public boolean accept(File ff,String name){
					File fff = new File(ff,name);
					if(fff.isDirectory()){
						test(fff);
					}
					return name.toLowerCase().endsWith(".java");
				}
			});
			for(File f:fi){
				//System.out.println(f);
				i++;
			}
		}
		System.out.println(i);
	}
}
//文件过滤器
class MyFilenameFilter implements FilenameFilter{
	public boolean accept(File file,String name){
		//System.out.println("File:"+file+" name:"+name);
		return name.toLowerCase().endsWith(".java");
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值