构造方法:
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);
}
}
}