File类构造函数
File f1=new File("H://asc//");//传入文件/目录的路径 File f2=new File(f1,"test.txt");//第一个参数为一个目录文件,第二个参数为要在当前f1目录下要创建的文件
file.list(); 获得file文件夹下所有文件/目录的字符串数组
String []liStrings=f1.list(); for (int i = 0; i < liStrings.length; i++) { System.out.println(liStrings[i]); }
利用list()函数遍历文件夹,递归显示文件夹下的文件/文件夹
public static void dfs(String filename) { // java 中区分大小写 String类首字母大写 File f = new File(filename); String namelist[] = f.list(); for (int i = 0; i < namelist.length; i++) { File fchild = new File(filename + "/" + namelist[i]); for (int j = 0; j < deep; j++) System.out.print(" "); if (!fchild.isDirectory()) System.out.println(namelist[i]);// 文件 打印 else {// 目录 System.out.println(namelist[i] + "/");// 先打印 再递归调用本身 dfs(filename + "/" + namelist[i]); } } }
file.isFile()判断当前file文件是否是文件 file.isDirectory()是否为目录 file.exist(); 此文件或者目录是否存在
File f1=new File("H://asc//");// File f2=new File(f1,"test.txt");// File f3=new File("H://notexistdir"); // System.out.println(f1.isFile()); System.out.println(f2.isFile()); System.out.println(f3.isFile()); System.out.println(f1.isDirectory()); System.out.println(f2.isDirectory()); System.out.println(f3.exists());
//运行结果:
false true false true false false
文件/目录的创建,删除
函数file.createNewFile() 创建此File对象文件 如果file之间已经存在,createNewFile 返回fasle 创建文件失败
函数 file.mkdir() 创建文件目录 ,此函数有个缺点 就是只能在已存在的路径下创建文件夹 如果你的File对象路径在电脑中不存在 则会创建失败。而使用 file.mkdirs() 即使文件路径不存在 函数会自动创建相应的文件夹目录 保证file对象的创建成功,
建议使用mkdirs()来创建文件夹
public void creatnewfile(String path) {// 创建新文件目录 File file = new File(path); if (file.exists()) { //判断此路径下的文件存在否 System.out.println("此文件已经存在!"); return; } System.out.println("创建此路径下的文件/目录?"); System.out.println("输入1创建文件目录 输入2 创建文件 "); Scanner scanner = new Scanner(System.in); int j = scanner.nextInt(); if (j == 2) { try { file.createNewFile();//创建文件 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { file.mkdirs();//创建目录 } }
file.delete()可实现文件/文件夹的删除 ,delete()函数虽然可以删除文件 ,但是在文件夹的删除上,只能实现对空目录的删除,如果你要删除的文件夹下面有文件/文件夹 则会删除失败
如果要实现对此类文件夹的删除 可以使用dfs遍历文件目录 +delete()实现
public boolean deleteFile(String path) {// 删除文件|目录(连联删除) File file = new File(path); if (!file.exists()) { System.out.println("文件不存在!"); return false; } dfsdelete(path); return true; } public void dfsdelete(String path) { File file=new File(path); if(file.isFile()) {//如果此file对象是文件的话,直接删除 file.delete(); return; } //当 file是文件夹的话,先得到文件夹下对应文件的string数组 ,递归调用本身,实现深度优先删除 String [] list=file.list(); for (int i = 0; i < list.length; i++) { dfsdelete(path+File.separator+list[i]); }//当把文件夹内所有文件删完后,此文件夹已然是一个空文件夹,可以使用delete()直接删除 file.delete(); return; }