1,遍历指定目录,按格式化要求输出文件列表。
package yx.file; import java.io.File; //遍历每个目录下的所有文件夹和文件 public class GetAllFile { public static void main(String[] args) { File file = new File("D:\\Program Files\\Notepad++\\"); listAll(file, 0); } private static void listAll(File dir, int level) { System.out.println(getSpace(level) + dir.getName()); // 获取指定目录下当前的所有文件夹或者文件对象 level++; File[] files = dir.listFiles(); for (int x = 0; x < files.length; x++) { if (files[x].isDirectory()) { listAll(files[x], level); } else System.out.println(getSpace(level) + files[x].getName()); } } private static String getSpace(int level) { StringBuilder sb = new StringBuilder(); sb.append("|--"); for (int x = 0; x < level; x++) { sb.insert(0, "| "); } return sb.toString(); } }
输出示例:
| | | |--cs.xml
2,遍历删除目录
File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除
package yx.file; import java.io.File; //File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除 public class DeleteAllFile { public static void main(String[] args) { //test(); File file=new File("D:\\我不是空文件夹"); deleteDir(file); } private static void deleteDir(File dir) { if(dir.exists()&&dir.isDirectory()){ File[] files=dir.listFiles(); for (File file : files) { if(file.isDirectory()){ deleteDir(file); }else{ if(file.delete()){ System.out.println("已删除文件===>"+file.getName()); } } } if(dir.delete()){ System.out.println("已删除目录===>"+dir.getName()); } } } private static void test() { File file1=new File("D:\\我是空文件夹"); File file2=new File("D:\\我不是空文件夹"); if(file1.exists()&&file1.isDirectory()){ file1.delete(); } if(file2.exists()&&file2.isDirectory()){ file2.delete();//如果文件夹不为空,通过此方法我们不能删除该目录 } } }
3,指定文件清单列表
package yx.file; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; /* * * 获取指定目录下,指定扩展名的文件(包含子目录中的) * 这些文件的绝对路径写入到一个文本文件中。 * * 简单说,就是建立一个指定扩展名的文件的列表。 * * 思路: * 1,必须进行深度遍历。 * 2,要在遍历的过程中进行过滤。将符合条件的内容都存储到容器中。 * 3,对容器中的内容进行遍历并将绝对路径写入到文件中。 * * */ //本实例获得E:\\workspace里面的所有.java文件,把他们的路径保存到E:\\temp\\temp.txt文件夹下面 public class GetSpecifiedFile { public static void main(String[] args) { File dir=new File("E:\\workspace\\"); File outFile=new File("E:\\temp\\temp.txt"); FilenameFilter filter=new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".java"); } }; getSpecifiedFile(dir,filter,outFile); } //主功能函数 private static void getSpecifiedFile(File dir, FilenameFilter filter, File outFile) { List<File> list=new ArrayList<File>(); getFileList(dir,filter,list); write2File(list,outFile); } //遍历获得指定文件保存到list中 private static void getFileList(File dir, FilenameFilter filter,List<File> list) { File[] all=dir.listFiles(); for(int i=0;i<all.length;i++){ if(all[i].isDirectory()){ getFileList(all[i],filter,list);//递归操作 }else{ if(filter.accept(dir, all[i].getName())){//过滤文件名 list.add(all[i]); } } } } //把取到的文件路径保存到知道文件夹 private static void write2File(List<File> list, File outFile) { File dir=outFile.getParentFile(); if(!dir.exists()){ dir.mkdir();//如果目录不存在的话,需要新建一个目录。因为FileWriter只会帮用户建文件,不会帮用户将目录。如果没有目录将会报错 } BufferedWriter rw=null; try { rw=new BufferedWriter(new FileWriter(outFile)); for (File file : list) { rw.write(file.getAbsolutePath()); rw.newLine(); rw.flush(); } } catch (IOException e) { e.printStackTrace(); }finally{ if(rw!=null){ try { rw.close(); rw=null; } catch (IOException e) { e.printStackTrace(); } } } } }
4,文件的切割和合并。(类似我们下载的文件 是1.part 2.part的形式)
实用IO流操作以后继续更新。。。