Java day10 IO 列出文件下的所有层级文件名 待修改
2016-03-25 11:57
495 查看
//需求:列出指定路径下的所有层级文件目录,并将该目录写入文件 //注意!!执行写入时在write()后必须写flush()或者close(),将流数据刷入文件,否则数据永远存在流中 //递归 你的问题是经常想把处理值与输出值分离,使用return不灵活 //若递归方法中有每次调用都会发生变化的值,那么把它提到形参列表里 import java.io.*; class FileDemo { public static void constMethod() { //构造方法,将已存在或不存在的路径名实例化为对象 //目录名 File d=new File("d:"+File.separator);//File.separator是目录分隔符,windows中 \\ //目录名 文件名 File f2=new File(d,"psb.jpg"); // System.out.println("file name :"+f2+Long.MAX_VALUE); } //待修改 public static void createFile()throws IOException { //在指定位置创建文件,返回boolean型,文件已存在,则返回false File f=new File("E:\\代码\\day11\\newfile.txt"); f.createNewFile(); //临时文件 File d=new File("d:"+File.separator); File f1=f.createTempFile("2哈哈哈",".txt",d); System.out.println(f.length()); f1.delete(); System.out.println(f.exists()); System.out.println(f.isFile()); //listPath(); } public static void main(String[] args) throws IOException { constMethod(); createFile(); // list(new File("e:"));//指定路径(根)与当前默认路径处于同一根目录下,以当前路径为准 // listEqual(); File f=new File("F:\\电影"); FileWriter fw = new FileWriter(f.toString()+"\\list of movies.txt",false); recursShow(f,fw,0); fw.close(); //System.out.println(f.getAbsolutePath()); } } public static void listEqual()throws IOException {//列出指定文件类型的文件目录 File dir=new File("E:\\代码\\day08"); //待修改 String []arr=dir.list(new FilenameFilter()//过滤器 {//复写FilenameFilter接口的accept方法——匿名内部类 public boolean accept(File dir,String name) { return name.endsWith(".java"); } }); System.out.println("共找到文件"+arr.length+"个"); for(String name:arr) {//增强for循环 System.out.println(name); } } public static void recursShow(File dir,FileWriter fw,int level)throws IOException {//递归:列出指定路径下的所有层级文件目录,并将该目录写入文件 if(dir.exists()) { System.out.println(getLevel(level)+dir); fw.write(getLevel(level)+dir+"\r\n"); level++; //返回对象目录下的所有文件对象 File[] files=dir.listFiles(); for(int i=0;i<files.length;i++) { if(files[i].isDirectory())//&&!dir.isHidden()) { recursShow(files[i],fw,level);//递归调用该方法 } else { System.out.println(getLevel(level)+files[i]); fw.write(getLevel(level)+files[i].getName()+"\r\n"); //fw.flush(); 注意!!执行写入时在write()后必须写flush()或者close(),将流数据刷入文件,否则数据永远存在流中 } } } } public static void list(File f) {//列出f下的所有文件目录 String[] filenames=f.list(); //增强for循环——for(接收的数据类型 变量名:容器) for(String filename:filenames) System.out.println(filename); } public static String getLevel(int level) {//文件目录列表格式控制 StringBuilder sb=new StringBuilder(); sb.append("|--");//在右面插入 for(int i=0;i<level;i++) sb.insert(0," ");//在左面插入 return sb.toString(); } }
相关文章推荐
- Java day10 递归
- Spring shiro使用
- 成为JAVA(高级)工程师,该学什么?
- Java DES 3DES AES Base64加密
- (java)统计小于N的数中素数的个数
- 在SpringMVC中获取request对象的几种方式
- eclipse编码格式设置教程、如何为eclipse设置编码格式?
- java 软引用、弱引用、强引用、虚引用的解析
- 我爱学Java之正则表达式
- javaweb学习总结(五)——Servlet开发(一)
- Java day10 IO FileWriter
- eclipse jetty插件安装(离线版)
- Eclipse新建类的时候如何自动添加注释(作者,时间的信息
- 更改eclipse(myeclipse) author的默认名字(注释的作者)
- Java实现tree
- java生成二维码
- ConcurrentHashMap源码剖析
- Java day10 IO FileReader,Properties 待补充
- (JNI)c代码利用反射调用java方法
- Java基础之多线程与并发篇