面试题求解:用java列举某个文件夹下所有的文件或者目录编程题

有人问及一个用java列举某个文件夹下所有的文件或者目录编程题。结果他不加思索的写了十几行代码,就搞定了,结果面试官说等通知,直到最后都没通知他,我猜想出题人的最终想法是看如何封装代码,如何灵活使用丰富的API。

于是我试着写一个可选择结果,希望对各位有用:

import java.io.File;
import java.io.FileFilter;

/**

  • 如何列出某个目录下的所有文件/目录
  • @author leizhimin 2010-3-22 20:58:37
    */
    public class FileTest {
    public static final byte TYPE_ALL = 0; //所有的文件和文件夹
    public static final byte TYPE_FILE = 1; //文件
    public static final byte TYPE_DIR = 2; //文件夹
    public static void main(String args[]) {
            File[] flist = listFile("C:\\", FileTest.TYPE_FILE);
            for (File file : flist) {
                    System.out.println(file.getPath());
            }
    } 
    
    /**
     * 列举文件或者目录
     *
     * @param path 操作目录
     * @param type 列举的类型
     * @return 所列举的文件或文件夹列表
     */
    public static File[] listFile(String path, byte type) {
            File[] result = null;
            File f = new File(path);
            switch (type) {
                    case TYPE_ALL:
                            result = f.listFiles();
                            break;
                    case TYPE_FILE:
                            result = f.listFiles(new MyFileFilter(true));
                            break;
                    case TYPE_DIR:
                            result = f.listFiles(new MyFileFilter(false));
                            break;
                    default:
                            result = f.listFiles();
            }
            return result;
    } 

    }

/**

  • 文件过滤器
    */
    class MyFileFilter implements FileFilter {
    //过滤所要保留的类型是否是文件
    private boolean isFile = true;

    MyFileFilter(boolean isFile) {
            this.isFile = isFile;
    } 
    
    public boolean accept(File pathname) {
            if (isFile) {
                    if (pathname.isFile()) return true;
                    return false;
            } else {
                    if (pathname.isDirectory()) return true;
                    return false;
            }
    } 

    }

输出结果:

C:\bootfont.bin
C:\ntldr
C:\NTDETECT.COM
C:\CONFIG.SYS
C:\AUTOEXEC.BAT
C:\IO.SYS
C:\MSDOS.SYS
C:\GHLDR
C:\boot.ini
C:\锦衣卫TC国语中字修正声音甄子丹赵薇2010最新动作大片.rmvb
C:\The.Hurt.Locker.2008.拆弹部队.双语字幕.HR-HDTV.AC3.1024x544.x264-人人影视.mkv
C:\Linux程序设计(第三版)_3of2.rar
C:\Linux程序设计(第三版)_3of1.rar
C:\Linux程序设计(第三版)_3of3.rar
C:\Linux程序设计(第三版)_目录.rar
C:\4.txt

Process finished with exit code 0

原文地址:https://blog.51cto.com/14512197/2445950

时间: 2024-10-25 08:37:02

面试题求解:用java列举某个文件夹下所有的文件或者目录编程题的相关文章

java读取某个文件夹下的所有文件

import java.io.FileNotFoundException;import java.io.IOException;import java.io.File; public class ReadFile {        public ReadFile() {        }        /**         * 读取某个文件夹下的所有文件         */        public static boolean readfile(String filepath) thro

Java遍历文件夹下的所以文件

利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重命名操作 1 package com.zhang.test; 2 3 import java.io.File; 4 5 public class getfilepath { 6 7 public static void main(String[] args) { 8 getDirectory(new

Java遍历一个文件夹下的全部文件

Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常使用的构造器有: 1.public File(String pathname){} 在pathname路径下创建文件对象 2.public File(String path,String name){} 在path參数指定的文件夹中创建具有给定名字的File对象.假设path为null,构造器将使用

用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了一个小工具. 以下代码只实现了把多级文件夹下的所有文件复制到一个文件夹中,如果需要指定复制文件的格式,可以在1111处添加一个判断.如果需要同时删除原文件夹可以在添加一个递归删除的方法. package Bao; import java.io.BufferedInputStream;import j

JAVA 遍历文件夹下的所有文件

JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = 0, folderNum = 0; File file = new File(path); if (file.exists()) { LinkedList<File> list = new LinkedList<File>(); File[] files = file.listFile

JAVA获取文件夹下所有的文件

package com.test; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; /** *获取文件夹下所有的文件 */ public class FileTest { private static final Logger logger = LoggerFactory.getLogger(FileTest.class); @Test pub

Java File IO 练习题:把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.In

Android开发系列(十七):读取assets文件夹下的数据库文件

在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中写的一个小游戏的一个问题.另外也能够读取Raw文件夹下的数据库文件) 这就造成了一个问题.这个问题事实上非常好解决,解决方法例如以下: 我们首先把有数据的数据库文件放在assets资源文件夹下边,然后在apk应用启动的时候,把assets文件夹下的数据库文件的数据写入到真机的内存中去. 下边開始我们

IO流的练习3 复制多级文件夹下的指定文件并改名

需求:复制指定目录下的指定文件,并修改后缀名. 指定的文件是:.java文件. 指定的后缀名是:.jad 数据源所在文件夹:C:\Users\Administrator\Desktop\记录 目的地所在文件夹:C:\Users\Administrator\Desktop\新建文件夹\copy 分析: A:封装数据源的目录 B:封装目的地的目录 判断路径下的文件是否是文件夹 是:在目的文件夹下创建该文件, 获取数据源所在文件夹的所有文件的File数组 遍历File数组,得到每个文件的File对象