JavaCore File

构造方法:

        new File(String 路径)

        new File(String 父目录,String 文件名)

        new File(File 父目录对象,String 文件名)

        *:File.separator 路劲分界符

方法:
        static listRoots() : 列出当前计算机的所有根目录

import java.io.*;
import java.util.*;
public class PraFileRoots{
	public static void main(String[] args)throws Exception{
		File[] rootNow = File.listRoots();


		while(true){
			Thread.sleep(4000);
			File[] rootAfter = File.listRoots();
			if(rootAfter.length != rootNow.length ){
				System.out.println("有外来设备入侵");
				List<File> l1 = new ArrayList<>();
				Collections.addAll(l1,rootNow);
				List<File> l2 = new ArrayList<>();

				Collections.addAll(l2,rootAfter);
				l2.removeAll(l1);
				System.out.println(l2);
			}
		}
	}
}

        String[] list():列出一个目录当中所有的文件名字

import java.io.*;
public class List1{
	public static void main(String[] args){
		File now = new File(".");//".."是上级目录
		String[] now1 = now.list();

		for(String s : now1){
			if(s.toLowerCase().endsWith(".class") || s.toLowerCase().endsWith(".bat")){
				File f = new File(now,s);
				f.delete();
			}
		}
	}
}

        File[] listFiles() : 列出一个目录当中所有的文件对象  *****

import java.io.*;
public class TestListFiles{
	public static void main(String[] args){
		File dir = new File(".");
		File[] fs = dir.listFiles();
		for(File f : fs){
			if(f.getName().toLowerCase().endsWith(".class")){
				f.delete();
			}
		}
	}
}

        * :listFiles()是可以传入一个过滤器对象的

                        FileFilter         public boolean accept(File file){..}

        

import java.io.*;
/*
	你知道c:\有windows目录吗?
	你知道windows目录下 有system32目录吗?
	请用程序统计 这个system32目录下总共有多少个.dll文件
*/
public class TestFilterAGAG{//过滤器
	public static void main(String[] args){
		File dir = new File("c:\\windows\\system32");
		File[] fs = dir.listFiles((x) -> x.isFile() && x.getName().toLowerCase().endsWith(".dll"));
		System.out.println(fs.length);

	}
}

        exists()        isFile()        isDirectory()        length()

        delete()        renameTo()        mkdirs()

        getName()        getParent()        getAbsolutePath()

        setLastModified()        lastModified()

如何解析时间戳

        1.java.util.Date

                getYear() + 1900         getMouth()+1        getDate()

                getHours()                  getMinutes()           getSeconds()

        2.java.util.Calendar

                Calendar cal = Calendar.getInstance();

                setTimeInMillis()

                get(x)

                1        2+1        5        11        12        13        7-1

                3.java.text.SimpleDateFormat

                        format() : 从long到String

                        parse() + getTime() : 从String 到 long      

import java.io.*;
import java.util.*;
import java.text.*;
//我想统计 这些照片都是哪一天拍摄的 每天拍摄了多少张
public class BigOneAG{
	public static void main(String[] args){
		Map<String,List<File>> map = new TreeMap<>();

		File dir = new File("d:\\KBD Life");
		File[] fs = dir.listFiles();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		//统计
		for(File f:fs){
			long time = f.lastModified();
			String date = sdf.format(time);
			if(map.containsKey(date)){
				List<File> oldList = map.get(date);
				oldList.add(f);
			}else{
				List<File> newList = new ArrayList<>();
				newList.add(f);
				map.put(date,newList);
			}
		}
		//遍历的过程中 完成两件事
		//1.排序那些个list
		map.forEach((date,list)->{
			Collections.sort(list,(x,y)->{
				Long t1 = x.lastModified();
				Long t2 = y.lastModified();
				return t1.compareTo(t2);
			});

			for(int x  = 0;x<list.size();x++){
				File src = list.get(x);
				String newName = date + " [" + (x+1) +"].jpg";
				File tar = new File(dir,newName);
				src.renameTo(tar);
			}

		});

		//2.遍历list 重命名
	}
}

        

/*
	递归遍历的攻略贴:
	1st.我们需要一个过滤所有子目录的过滤器 最好使用单例
				FileFilter     public boolean accept(File f){}

	2nd.我们还需要一个过滤所有目标文件的过滤器 同样使用单例

	3rd.我们需要一个递归调用的核心方法 这个方法代表对付一个目录的完整流程
			这个方法的参数 就是正要对付的那个目录

			3-1: 利用1st开发完成的过滤器 过滤出当前目录中所有子目录
			3-2: 利用2nd开发完成的过滤器 过滤出所有目标文件
			3-3: 判断3-1或者3-2得到的是否为空 防止没有权限导致异常
			3-4: 遍历3-1得到的每个子目录 再次调用3rd那个方法
			3-5: 遍历3-2得到的每个目标文件 进行操作

	4th.主方法当中 利用listRoots()得到当前计算机的所有根目录
		遍历每一个根目录 挨个调用3rd那个方法~
*/
import java.io.*;
public class SearchAgainAG{
	public static void main(String[] args){
		File[] rts = File.listRoots();
		for(File r : rts){
			kill(r);
		}
	}
	//3rd.我们需要一个递归调用的核心方法 这个方法代表对付一个目录的完整流程
	//		这个方法的参数 就是正要对付的那个目录
	public static void kill(File tar){
		File[] ds = tar.listFiles((x) -> x.isDirectory());
		File[] js = tar.listFiles((x) -> x.isFile() && x.getName().toLowerCase().endsWith(".jpg"));
		if(ds == null) return;
		for(File d : ds){
			kill(d);
		}
		for(File j : js){
			System.out.println(j);
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry鹿17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值