java.io
File
- 描述文件本身和属性
- File类的方法大多是自解释型的
- isFile()和isAbsolute()不是自解释型的
- isFile 文件返回true,目录返回false,设备驱动和命名管道返回false
代码示例
public static void p(String str,Object obj){
System.out.printf("%100s : %-100s\n",str,String.valueOf(obj));
}
public static void main(String[] args) {
File file = new File("/java/COPYRIGHT");
p("File name",file.getName());
p("path",file.getPath());
p("绝对路径ABSpath",file.getAbsolutePath());
p("Parent",file.getParent());
p("exists",file.exists());
p("canWarite",file.canWrite());
p("isDirectory",file.isDirectory());
p("isFile",file.isFile());
p("isAbsSolute",file.isAbsolute());
p("file last modified",file.lastModified());
p("size",file.length()+"Bytes");
}
//输出
// File name : COPYRIGHT
// path : \java\COPYRIGHT
// 绝对路径ABSpath : E:\java\COPYRIGHT
// Parent : \java
// exists : false
// canWarite : false
// isDirectory : false
// isFile : false
// isAbsSolute : false
// file last modified : 0
// size : 0Bytes
renamTo重命名
File file = new File("G:/path/a.bat");
boolean flag = file.renameTo(new File("G:/path/b.bat"));
System.out.println(flag);//true
delete 如果有子文件或者目录无法删除,空目录可以删除
File file = new File("G:/path/A");
boolean flag = file.delete();
System.out.println(flag);//false
System.out.println(new File("G:/path/B").delete());//true
递归删除所有文件
public void delFile(String path){
File file = new File(path);
if(file.isFile()){
file.delete();
}
if(file.isDirectory()){
String[] strs = file.list();
if(strs.length>0){
for(int i=0;i<strs.length;i++){
delFile(path+ File.separator+strs[i]);
}
file.delete();
}
}
}
实现了Comparable 接口
File f1 = new File("G:/path/a.bat");
File f2 = new File("G:/path/b.bat");
int co = f1.compareTo(f2);
System.out.println(co);
System.out.println(f2.compareTo(f1));
//-1
//1
转为Path对象 toPath
File f1 = new File("G:/path/a.bat");
Path path = f1.toPath();
目录
包含其他文件和目录的File
isDirectory 判断是否是文件
list()方法返回其中的目录和文件
String[] list()
File file = new File("/");
String[] arr = file.list();
for(int i=0;i< arr.length;i++){
System.out.println(arr[i]);
}
获取当前目录下的所有目录和文件
public void iteratorFile(String path){
File file = new File(path);
System.out.println(file.getPath() + file.getName());
if(file.isDirectory()){
String[] arr = file.list();
if(arr != null)
for(String name : arr){
System.out.println(name);
if(!path.equals("/")){
iteratorFile(path + "/" + name);
}else{
iteratorFile(path + name);
}
}
}
}
public String[] list(FilenameFilter filter)
实现
public class FileFilterImpl implements FilenameFilter {
private String ext;
public FileFilterImpl(String exc){
this.ext = exc;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(ext);
}
}
File file = new File("/");
//androidProject
String[] strs = file.list(new FileFilterImpl("roject"));
for(String s : strs){
System.out.println(s);
}
lambda
File file = new File("/androidProject");
//androidProject
String[] strs = file.list((f,n)->{
// System.out.println("fileName:" + f.getName()); 当前目录
// System.out.println("name"+n); 当前目录的子目录或文件
return !n.equals(".idea");
});
for(String s : strs){
System.out.println(s);
}
还有listFiles,方法签名如下
File[] listFiles();
File[] listFiles(FilenameFIlter fileName)
File[] listFiles(FileFilter fObj)
具体使用方式和上面一致
创建目录
maker
在存在的路径下创建目录
makers
为不存在的路劲创建目录