java File 类对操作系统文件目录进行操作:增删查
File类
1,概述
File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。
2,构造方法
- public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
- public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的File实例。
- public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的File实例。
3,常用方法
在计算机中,在我们操作目录的时候,这个.代表是当前目录,..代表父目录
1,文件名相关的方法:
- getAbsolutePath():返回文件或者目录的绝对路径
- getPath():将此抽象路径名转换为路径名字符串
- getName():返回文件名
- renameTo(File file):把文件剪切为一个新的路径
2,文件检测相关的方法:
- boolean exists(): 判断File对象所对应的文件或目录是否存在
- boolean canWrite(): 判断File对象所对应的文件和目录是否可写。如果是目录,表示是否可以在目录中创建文件。如果是文件,表示是否可以在文件中写入内容。
- boolean canRead(): 判断File对象所对应的文件和目录是否可读。
- boolean isFile(): 判断File对象所对应的是否是文件,而不是目录
- boolean isDirectory(): 判断File对象所对应的是否是目录,而不是文件
- boolean isAbsolute(): 判断File对象所对应的文件或目录是否是绝对路径。该方法消除了不通平台的差异,可以直接判断 File 对象是否为绝对路径。在Linux系统上如果文件开头是一个斜杠/那么是绝对路径,在windows系统上,如果文件开头是一个磁盘盘符,那么是绝对路径
3,获取文件的常规信息:
- long lastModified(): 返回文件的最后修改时间戳
- long length(): 返回文件内容的长度
4,文件增删:
- boolean createNewFile(): File所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,如果创建成功则返回 true;否则返回false
- boolean delete(): 删除File对象所对应的文件或路径
5,目录相关的方法:
- boolean mkdir(): 试图创建File所对应的目录,如果创建成功,则返回true; 否则返false 调用该方法时File对象必须对应一个路径,而不是一个文件
- boolean mkdirs():创建File对应的目录,包括其父目录
- String[] list(): 列出 File 象的所有子文件和路径名 ,返回String数组
- File[] listFiles(): 列出File对象的所有子文件和路径,返回file数组。
小测试:递归查找所有子目录下文件
import javax.naming.Name; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; /** * @ClassName JavaIOFileExample * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/4/16. */ public class JavaIOFileExample { public static void main(String[] args) { File file = new File("输入输出文件读写/src/test"); file.mkdir(); //创建目录 // String[] filelist = file.list((dir, fileName)-> fileName.endsWith(".txt")); //过滤器 String[] nameList = file.list(); //打印文件名 for (String f : nameList){ System.out.println(f); } //打印目录下所有文件 listDir(file); } /** * 简单封装一下便于入口只需指定一个目录名 * @param file */ public static void listDir(File file){ listDir(file,0); } /** * @param dir File 对象 * @param spaceNum 需要打印的空格数,便于区分层级 */ public static void listDir(File dir, int spaceNum){ for(int i=0; i<spaceNum; i++){ System.out.print(" "); } System.out.println(dir.getName()); File[] files = dir.listFiles(); for(File subDirOrFile : files){ if(subDirOrFile.isDirectory()){ listDir(subDirOrFile,spaceNum + 2); }else{ for(int i=0; i<spaceNum + 2; i++){ System.out.print(" "); } System.out.println(subDirOrFile.getName()); } } } }
posted on 2021-04-17 09:46 zhangmingda 阅读(228) 评论(0) 编辑 收藏 举报