200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Java基础---Java---IO流-----File 类 递归 删除一个带内容的目录 列出指定目录下

Java基础---Java---IO流-----File 类 递归 删除一个带内容的目录 列出指定目录下

时间:2020-04-26 16:16:44

相关推荐

Java基础---Java---IO流-----File 类 递归 删除一个带内容的目录 列出指定目录下

File 类

用来将文件或者文件夹封装成对象

方便对文件与文件夹进行操作。

File对象可以作为参数传递给流的构造函数

流只用操作数据,而封装数据的文件只能用File类

File类常见方法:

1.创建

boolean createNewFile():在指定位置创建文件。如果该文件已经创建,则不创建。

2.删除

boolean delete();删除失败,返回false

void deleteOnExit();在程序退出时,删除指定文件。

3.判断

boolean exists().测试此抽象路径名表示的文件或目录是否存在。

boolean mkdir():创建文件夹

boolean mkdirs():创建多级文件夹

isFile();

isDirectory();

isHidden();

isAbsolute();

4.获取信息

getName();

getPath();//相对路径文件

getAbsoluteFile()//返回的是对象

getAbsolutePath()//返回的是字符串

getParent(); //如果没有明确的指定它的路径,则返回一个null

lastModified();

length();

import java.io.*;class FileDemo{public static void main(String[]args)throws IOException{ConsMethod();method_1();method_2();method_3();method_4();method_5();}public static void method_1()throws IOException{File f=new File("file.txt");sop("create"+f.createNewFile());//sop在文件操作中相当于打印(System.out);f.delete(OnExit());sop("delete"+f.delete());}public static void method_2()throws IOException{File f=new File("FileDemo.java");sop("execute"+f.canExecute());//判断文件是否可执行//创建文件夹File dir=new File("abc");sop("mkdir"+dir.mkdir());}public static void method_3()throws IOException{File f=new File("FileDemo.java");f.createFile();//记往在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在。通过exists判断。sop("dir"+f.isDirectory());sop("dir"+f.isFile());}public static void method_4()throws IOException{File f=new File("file.txt");sop("path"+f.getPath());sop("abpath"+f.getAbsolutePath());sop("parent"+f.getParent());//这个方法返回的是绝对路径下的父目录。如果是相对,则返回null}public static void method_5()throws IOException{File f1=new File("c:\\Test.java");File f2=new File("d:\\sf.java");sop("rename"+f1.renameTo(f2));//返回的是true或false,这种方法类似剪切。移动。。}public static void ConsMethod(){//将a.txt封装成file对象,可以将已有的和为出现的文件或者文件夹File f1=new File("a.txt");File f2=new File("c:\\abc","b.txt");File f4=new File("c:"+File.separator+"abc\\zzz\\a.txt");//目录分隔符}}

FilenameFilter:这是一个接口,实现此接口的类实例可用载过滤文件名

import java.io.*;class FileDemo2{public static void main(String[] args){listRootsDemo();listDemo();File dir=new File("d:\\Programfiles\\");String[] arr=dir.list(new FilenameFilter(){public void accept(File dir,String name){//System.out.println("dir:"+dir+"...name::"+name);//return false;return name.endWith(".bmp");}});//传递一个匿名内部类for(String name:arr){System.out.println(name);//}}public static void listRootsDemo(){File[] files=File.listRoots();for(File f:files){System.out.println(f);}}public static void listsDemo(){File[] files=new File("c:\\");String [] names=f.list();//调用list方法的file对象必须是封装了一个目录,该目录还必须存在。for(String name:names){System.out.println(name);}for(File f:files){System.out.println(f);}}}

列出指定目录下文件夹或者文件夹,包含子目录中的内容。也就是指定目录下所有内容。因为目录中还有目录,只要使用同一个列出目录的功能函数完成即可。

在列出的过程中出现的还是目录的话,还可以再次调用本功能。

这种表现形式的手法,称为递归。

递归要注意:

1.限定条件。

2.要注意递归的次数。尽量避免内存溢出

import java.io.*;class FileDemo{public static void main(Stirng[] args){File dir=new File("d:\\Programfiles");showDir(dir);toBin(6);}public static void toBin(int num){while(num>0){toBin(num/2);System.out.println(num%2);}}public static void showDir(File dir){System.out.println(dir);File[] files=dir.listFiles();for(int x=0;x<files.length();x++){if(files[x].isDirectory())showDir(files[x]);//如果判断是子目录,则再调用showdirelseSystem.out.println(files[x);}}}showA();void showA(){showB();sop(A);}void showB(){showC();sop(B);}void showC(){sop(C);}

<span style="font-size:18px;color:#ff0000;"><strong>列出目录下所有的内容。</strong></span>

import java.io.*;class FileDemo3{public static void main(Stirng[] args){File dir=new File("d:\\Programfiles");showDir(dir);}public static String getLevel(int level){StringBuilder sb=new StringBuilder();for(int x=0;x<level;x++){sb.append(" ");}return sb.toString();}public static void showDir(File dir(int level)){System.out.println(getLevel(level)+dir.getName());level++;File[] files=dir.listFiles();for(int x=0;x<files.length();x++){if(files[x].isDirectory())showDir(files[x],level);//如果判断是子目录,则再调用showdirelseSystem.out.println(getLevel(level)+Files(x));}}}

删除一个带内容的目录

删除原理:

在window中,删除目录从里面住外删除的。

既然是从里往外删除,就需要用到递归

删除的文件不会出现在回收站里

import java.io.*;

class removeDir{

public static void main(String[] args){

File dir=new File("d:\\testDir");

remove(dir);

}

public static void remove(File dir){

File[] files=dir.listFiles();

for(int x=0;x<files.length;x++){

if(!files[x].isHidden()&&files[x].isDirectory())

remove(files[x]);

else

System.out.println(files[x].toString()+"-file-"+files[x].delete());//删除的时候打印一下,就要以看到是否重删等

}

System.out.println(dir.toString()+"-dir-"+dir.delete());

}

}

思路:

1、对指定的目录进行递归。

2.获取递归过程中所有的java文件路径

3.将这些路径存诸到集合中。

4.将集合中的数据写入到一个文件夹中

import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class javaFileList {public static void main(String[] args) throws IOException{File dir=new File("d:\\java1223");List<File> list=new ArrayList<File>();fileToList(dir,list);System.out.println(list.size());File file=new File(dir,"javalist.txt");writeToFile(list, file.toString());}public static void fileToList(File dir,List<File> list){File[] files=dir.listFiles();for(File file:files){//遍历文件if(file.isDirectory())fileToList(file,list);//如果是目录,则继续递归else{if(file.getName().endsWith(".java"))//如果判断扩展名是.java,则加入文件集合list.add(file);}}}public static void writeToFile(List<File> list,String javaListFile)throws IOException{BufferedWriter bufw=null;try {bufw=new BufferedWriter(new FileWriter(javaListFile));for(File f:list){String path=f.getAbsolutePath();bufw.write(path);bufw.newLine();bufw.flush();}} catch (Exception e) {throw e;//这样扔的话,必须在上面标识IO异常}finally{try {if(bufw!=null)bufw.close();} catch (Exception e2) {throw e2;}}}}

Java基础---Java---IO流-----File 类 递归 删除一个带内容的目录 列出指定目录下文件夹 FilenameFilte

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。