java文件操作类常用Api
File类
File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以做到:
- 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等
- 2:创建和删除文件或目录
- 3:访问一个目录中的子项
但是File不能访问文件数据.
file提供了一些方法来进行相关的操作
-
创建File时要指定路径,而路径通常使用相对路径。
相对路径的好处在于有良好的跨平台性。
"./“是相对路径中使用最多的,表示"当前目录”,而当前目录是哪里
取决于程序运行环境而定,在idea中运行java程序时,这里指定的
当前目录就是当前程序所在的项目目录。File file = new File("./ceshi.txt");
-
获取文件名字:file.getName()
//获取名字 String name = file.getName();
-
获取文件大小:file.length();接収的为long类型
//获取文件大小(单位是字节) long len = file.length();
-
检测是否可读/可写:file.canRead();/file.canWrite();
//是否可读可写 boolean cr = file.canRead(); boolean cw = file.canWrite(); System.out.println("是否可读:"+cr); System.out.println("是否可写:"+cw);
-
检测是否为隐藏文件:file.isHidden();
boolean ih = file.isHidden(); System.out.println("是否隐藏:"+ih);
-
创建新文件,如果指定的文件所在的目录不存在会抛出异常:createNewFile()
public class FileDemo { public static void main(String[] args) throws IOException { //创建新文件(在当前而目录下) File file = new File("./test.txt"); //boolean exists()判断当前File表示的位置是否已经实际存在该文件或目录 if (file.exists()){ System.out.println("该文件已存在"); }else{ file.createNewFile(); } } }
-
删除文件:delete()
//删除文件 File file = new File("./text.txt"); if (file.exists()){ file.delete(); System.out.println("文件已删除"); }else{ System.out.println("文件不存在"); }
-
判断File表示的文件或目录是否真实存在。true:存在 false:不存在:exists()
//boolean exists()判断当前File表示的位置是否已经实际存在该文件或目录 if (f.exists()){ System.out.println("该文件已存在"); }else{ f.createNewFile(); }
-
判断当前File表示的是否为一个文件:isFile()
-
创建当前File表示的目录:mkDir()
创建当前File表示的目录,同时将所有不存在的父目录一同创建:mkDirs()
//创建目录 mkdir()创建时只能创建上面存在的目录,若创建多层目录则推荐使用mkdirs() File dir = new File("./demo"); if (dir.exists()){ System.out.println("目录已存在"); }else{ dir.mkdir(); System.out.println("该目录已创建"); } File dir = new File("./a/b/c"); if (dir.exists()){ System.out.println("目录已存在"); }else{ dir.mkdirs(); System.out.println("该目录已创建"); }
-
删除目录,如果目录不是空的则删除失败。:delete()
//将当前目录下的demo目录删除 File dir = new File("demo"); if(dir.exists()){ dir.delete();//delete方法删除目录时只能删除空目录 System.out.println("目录已删除!"); }else{ System.out.println("目录不存在!"); }
-
访问目录中所有的子项:listFiles
// boolean isFile() 判断当前File表示的是否为一个文件
-
判断当前File表示的是否为一个目录:isDirectory()
File dir = new File(".");//当前目录 if (dir.isDirectory()){//判断是否为目录 File[] subs = dir.listFiles();//将子项装进集合 System.out.println("一共有"+subs.length+"个子项");//输出有几个子项 for (int i = 0; i < subs.length; i++) {//遍历该目录下的子项 File sub = subs[i]; System.out.println(sub.getName());//将子项的名字惊醒输出 } }
-
获取File表示的目录中满足filter过滤器要求的所有子项:listFiles(FileFilter filter)
//有条件的获取一个目录中的子项,重载的listFiles方法:File[] listFiles(FileFilter) 该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。 FileFilter filter =new FileFilter() {//因为只使用一次,所以建议使用匿名内部类 @Override public boolean accept(File file) { String name = file.getName(); return name.contains("a");//返回目录中包含a的目录 } };//Filter:过滤器 accept:接受 File dir = new File("./基础语法/src/com"); if (dir.isDirectory()){ File[] subs = dir.listFiles(filter); System.out.println("一共有"+subs.length+"个子项"); for (int i = 0; i < subs.length; i++) { File sub = subs[i]; System.out.println(sub.getName()); } }