zoukankan      html  css  js  c++  java
  • 文件目录Java之文件实用操作(过滤、树形显示、排序)

    废话就不多说了,开始。。。

               迎欢探讨,转载请注明出处!

                   昨天在论坛上有一同窗在问关于文件序排的问题,这个问题其实不难。也就是通过

              获得文件列表,后之根据文件名或者其他的数参(文件大小,修改日期等等)停止序排而已。

                  不过用使Comparable接口偶然是不大妙的,这时就要斟酌用使Comparator接口了。

             反恰是训练嘛,道顺试试实现其他的能功,例如树形结构示显文件。

                 先贴下效果图吧:

                        文件过滤的,失掉某个目录下的有所文件(过滤掉目录),并序排

                

                     树形结构示显:

                 

                好了直接看码代分部吧:        

        每日一道理
    心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
      心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
    package com.kiritor.util;
    
    import java.io.File;
    import java.io.FileFilter;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * 文件的相干操纵类
     * 
     * @author Kiritor
     */
    public class FileOperation {
    	private static String contentPath;
    	private static String filePath;
    	private static File[] fileList = null;// 保存文件列表,过滤掉目录
    
    	public FileOperation() {
    
    	}
    
    	/** 构造函数的数参是一个目录 */
    	public FileOperation(String path) {
    		File file = new File(path);
    		if (file.isDirectory())
    			this.contentPath = path;
    		else
    			this.filePath = path;
    	}
        /**获得文件列表*/
    	public static File[] getFiles() {
    		if (contentPath == null) {
    
    			File file = new File(filePath);
    			fileList = new File[1];
    			fileList[0] = file;
    			return fileList;
    		}
    		fileList = new File(contentPath).listFiles(new FileFilter() {
    			
    			/**用使过滤器过滤掉目录*/
    			@Override
    			public boolean accept(File pathname) {
    				if(pathname.isDirectory())
    				{
    					return false;
    				}else
    					return true;
    			}
    		});
    		return fileList;
    	}
    
    	/** 对当前目录下的有所文件停止序排 */
    	public static File[] sort() {
    		getFiles();
    		Arrays.sort(fileList, new FileComparator());
    		return fileList;
    	}
    	
    	public static void tree(File f, int level) {
    		String preStr = "";
    		for(int i=0; i<level; i++) {
    			preStr += "    ";
    		}
    		File[] childs = f.listFiles();
    		//回返一个抽象路径名数组,这些路径名示表此抽象路径名示表的目录中的文件。
    		for(int i=0; i<childs.length; i++) {
    			System.out.println(preStr + childs[i].getName());
    			if(childs[i].isDirectory()) {
    				tree(childs[i], level + 1);
    			}
    		}
    	}
    
    	// 供提一个"较比器"
    	static class FileComparator implements java.util.Comparator<File> {
    		@Override
    		public int compare(File o1, File o2) {
    			// 按照文件名的字典次序停止较比
    			return o1.getName().compareTo(o2.getName());
    		}
    
    	}
    }

                   测试码代:

    package com.kiritor.util;
    
    import java.io.File;
    
    public class Test {
    	public static void main(String[] args) {
    		FileOperation fileOperation = new FileOperation("E:\\");
    		File[] files = fileOperation.getFiles();
    		fileOperation.sort();
    		for (File file : files) {
    			System.out.println(file.getName());
    		}
            fileOperation.tree(new File("D:\\mysql"), 1);
    	}
    }

                OK,体具就到这儿,至于其他的文件操纵,例如文件制复等就不在实现了。

                迎欢探讨,流交。

        

    文章结束给大家分享下程序员的一些笑话语录: 古鸽是一种搜索隐禽,在中国快绝迹了…初步的研究表明,古鸽的离去,很可能导致另一种长着熊爪,酷似古鸽,却又习性不同的猛禽类——犤毒鸟

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3047782.html
Copyright © 2011-2022 走看看