File类基础用法

File类

1.常用的创建File类对象的命令和创建文件或者文件夹
import java.io.File;
import java.io.IOException;
/*
	建file对象:
		File 引用名 = new File("绝对路径"); or File 引用名 = new File("j绝对路径的父目录","子目录");  or  File 引用名 = new File(父目录对象,"子目录");
	创建文件:
		File 引用名 = new File("绝对路径");
		Boolean falg = 引用名.createNewFile();(这里返回的是一个Boolean值,可用于判断是否创建成功)
	创建文件夹:
		File 引用名 = new File("绝对路径");
		Boolean falg = 引用名.mkidir();(这里返回的是一个Boolean值,可用于判断是否创建成功)
		创建叠层文件夹
		File 引用名 = new File("绝对路径");
		Boolean falg = 引用名.mkidirs();(这里返回的是一个Boolean值,可用于判断是否创建成功)
	重命名文件或文件夹:
		new File("绝对路径").renameTo(new File("绝对路径"));
	移动文件或文件夹:
    	new File("被修改的文件或文件夹的绝对路径").renameTo(new File("修改过的文件或文件夹绝对路径"))
*/
public class DemoCreateFile {

	public static void main(String[] args) throws IOException {
		//不管电脑上是否有这个文件名,都是可以创建对象的,只不过没有什么意义
		File file = new File("D:\\aaa");//这里由于转译字符的原因,所以用\\
		File file1 = new File("D:/aaa");//在win 和Linux系统里面通用
		File file2 = new File("D:"+File.separator+"aaa");//在不同的系统中有不同的分割符
		//打印对象,运行后可以发现,出来的效果是一样的
		System.out.println(file);
		System.out.println(file1);
		System.out.println(file2);
		//这仅仅只是获取了一个对象,没有任何含义
		File file3= new File(file,"bbb");
		System.out.println(file3);
		File file4 = new File("D:/aaa", "1.txt");
		System.out.println(file4);
		//w文件或者目录的添加
		File file5 = new File("D:/aaa/bbb");
		System.out.println("创建文件夹是否成功:" + file5.mkdir());
		File file6 = new File("D:/aaa/bbb/1.txt");
		System.out.println("创建文件是否成功:"+file6.createNewFile());
		File file7 = new File("D:/aaa/花儿乐队.txt");
		System.out.println("创建文件是否成功:"+file7.createNewFile());
		File file8 = new File("D:/aaa/bbb/ccc/ddd");
		System.out.println("文件夹创建成功:" + file8.mkdirs());
		//为文件修改名称
		file6.renameTo(new File("D:/aaa/bbb/2.txt"));
		//这里有一个新发现,就是说,把创建文件,和移动文件连用,会导致,每运行一次程序都会创建一个文件
	
		new File("D:/aaa/bbb/2.txt").renameTo(new File("D:/aaa/bbb/ccc/3.txt"));
		new File("D:/aaa/花儿乐队.txt").renameTo(new File("D:/aaa/bbb/5.txt"));
	}

}

2.删除文件或者文件夹
import java.io.File;
import java.util.Scanner;

/*
删除文件或者文件夹

boolean delete();
	删除文件或者文件夹
	【要求】
		1.删除操作时直接抹掉数据,不是放入回收站
		2.删除操作不能删除非空文件夹

void deleteOnExit();
	当程序退出时,删除调用该方法的文件或者文件夹。
	一般用于程序退出之后,删除对应的操作日志,错误日志和缓存文件
 	
 */
public class DeleteFile {

	public static void main(String[] args) {
		File file = new File("D:/aaa/bbb/1.txt");
		System.out.println(file.delete());
		//删除操作不能删除非空文件夹
		File file1 = new File("D:/aaa/bbb/ccc/ddd");
		System.out.println(file1.delete());
		File file2 = new File("D:/aaa/bbb/2.txt");
		file2.deleteOnExit();
		new Scanner(System.in).nextLine();
		System.out.println("程序运行结束");
	}

}

3.有关文件或文件夹判断方法
import java.io.File;
/*
一堆判断方法:
boolean isFile(); 判断是否是普通文件
boolean isDirectory(); 判断是否是文件夹
boolean exists(); 判断文件或者文件夹是否存在
boolean isHidden(); 判断文件或者文件夹是否是隐藏文件
boolean isAbsolute(); 是否使用绝对路径创建对应的File类对象
 */
public class BooleanFile {

	public static void main(String[] args) {
		System.out.println(new File("D:/aaa/bbb/5.txt").isFile());
		System.out.println(new File("D:/aaa/bbb/ccc").isDirectory());
		System.out.println(new File("D:/aaa/bbb/5.txt").exists());
		System.out.println(new File("D:/aaa/bbb/5.txt").isHidden());
		System.out.println(new File("D:/aaa/bbb/5.txt").isAbsolute());
    }
}
4.获取文件或文件夹的属性
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
以下方法,和文件是否存在无关!!!
String getName(); 返回创建文件路径对应的文件名或者文件夹名
String getPath(); 获取创建File类对象使用的字符串路径,并且分隔符会按照对应系统的分隔符操作
String getParent(); 获取创建路径最后的父目录路径
String getAbsolutePath(); 获取对应路径的绝对路径

 */
public class FileWay {

	public static void main(String[] args) {
		String s = "D:/aaa/bbb/ccc/2.txt";
		File file = new File(s);
		System.out.println(file.getName());
		System.out.println(file.getPath());
		System.out.println(file.getAbsolutePath());
		System.out.println(file.getParent());
		/*
		获取文件属性的方法:
			long length(); 获取文件占用硬盘空间的大小
				如果是0,表示文件不存在,或者是一个文件夹,有可能文件夹出现一个4096
			long lastModified(); 获取当前文件的最后修改时间
			
			SimpleDateFormat 类 一般带有一个字符串约束展示时间的类型
		 */
		System.out.println(file.length());
		long time = file.lastModified();
		System.out.println(time);
		SimpleDateFormat sf = new SimpleDateFormat("YYYY-MM-dd  HH-mm-ss");
		System.out.println(sf.format(new Date(time)));

	}

}
5.获取文件夹里边的文件
import java.io.File;

/*
static File[] listRoots();
	在windows操作系统下,返回当前操作系统中所有的盘符

String[] list();
 	获取指定目录下的所有文件和文件夹的名字,返回一个String类型的数组
 
File[] listFiles();
	获取指定目录下所有文件和文件夹的File类对象数组
 */
public class FilePath {

	public static void main(String[] args) {
		File[] listRoots = File.listRoots();
		for (File file : listRoots) {
			System.out.println(file);
		}
		File filel = new File("D:/aaa");
		String[] list = filel.list();
		for (String string : list) {
			System.out.println(string);
		}
		System.out.println();
		File[] listFiles = filel.listFiles();
		for (File file : listFiles) {
			System.out.println(file);
		}
	}
}
6.文件过滤器
import java.io.File;
import java.io.FilenameFilter;
class MyFilter implements FilenameFilter {

	@Override
	public boolean accept(File dir, String name) {
//		System.out.println(dir.getPath());
//		System.out.println(name);
		/*
		 * 如何判定这里是一个Java文件???
		 * 1. 先是一个文件
		 * 2. 要求文件名使用.java结尾
		 */
		return new File(dir, name).isFile() && name.endsWith(".java");
	}
	
}
public class FilenameFieterTest {

	public static void main(String[] args) {
		File file = new File("D:\\aaa\\bbb\\ccc");
//		File[] listFiles = file.listFiles(new MyFilter());
//		for (File file2 : listFiles) {
//			System.out.println(file2);
//		}
//		System.out.println();
		File[] listFiles = file.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				return new File(dir,name).isFile() && name.endsWith(".txt");
			}
		});
		for (File file2 : listFiles) {
			System.out.println(file2);
		}
	}
}
7.文件归档代码
import java.io.File;
import java.io.FilenameFilter;

public class TestType {
	public static void main(String[] args) {
        //创建文件对象
		File file = new File("D:/aaa/bbb/test");
		classily(file);

	}
	public static void classily(File file) {
        /*这里实现一个接口,这个接口的作用就是一个过滤器,这里边的file.listFiles()这个方法是把该文件夹里的文件都生成对象存进File[]数组,用每一个对象调用new FilenameFilter()这个匿名类进行判断过滤。
        */
		file.listFiles(new FilenameFilter() {
			
			@Override
            //注意这里参数File dir这里是父目录对象,不是一个文件的对象
			public boolean accept(File dir, String name) {
                //name.lastIndexOf():这和方法是获取最后一个.的下标,用于后边分割后缀名。
				int index = name.lastIndexOf(".");
                //这里是判断一下是不是一个文件夹
				if(new File(dir,name).isDirectory()) {
                    //创建文件夹
					new File("D:/aaa/文件夹").mkdir();
                    //移动文件
					new File(dir,name).renameTo(new File("D:/aaa/文件夹/" + name));
				} else if(index >= 0) {
                    //获取后缀名
					String str = name.substring(index+1);
                    //生成一个以后缀名为名字的文件夹
					new File("D:/aaa/bbb/"+str).mkdir();
                    //移动文件
					new File(dir,name).renameTo(new File("D:/aaa/bbb/"+str+"/"+name));
				} else {
                    //没有后缀名的文件全部放在Other文件夹里
					new File("D:/aaa/bbb/Other").mkdir();
					new File(dir,name).renameTo(new File("D:/aaa/bbb/Other/"+name));
				}
				return true;
			}
		});
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值