日期:2014-05-20  浏览次数:20705 次

请问各位大牛,java如何一次性读取一个目录下的多个文件??
比如说:一个目录下有很多个文件(不知道文件数量),如何一次性读取十个文件,就是说10个10个的读取文件读完为止,然后将文件内容放到内存中!!

求各位大牛帮帮忙啦!小弟感激不尽

------解决方案--------------------
File f=new File("E:\\")
File[] fd=f.listFile();
这样fd数组就是获得目录f下的所有文件。
想要10个10个读取就用for循环吧
------解决方案--------------------
三楼这样就可以了。
另外循环的时候可以加上:判断是文件还是文件夹还是文件,如果是文件夹需要递归调用方法。

if(file.isFile()) //判断是否是文件


if(file.isDirectory()) //判断是否是文件夹
------解决方案--------------------
探讨
三楼这样就可以了。
另外循环的时候可以加上:判断是文件还是文件夹还是文件,如果是文件夹需要递归调用方法。

if(file.isFile()) //判断是否是文件


if(file.isDirectory()) //判断是否是文件夹

------解决方案--------------------
不知楼主的“文件”有没有包括子文件夹中的文件 不包括的话,以下代码应该对楼主有用:
Java code

package com.yangxiutian; 

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

public class Test {
    public static void main(String[] args) { 
        File[] fs=getFiles("C:\\Documents and Settings\\Administrator\\桌面",3);
        for(File temp:fs){ 
            System.out.println(temp.getName()); 
        }
    }
    /**
     * 
     * @param dir               指定的路径
     * @param currentPage 类似于分页
     * @return
     */
    static File[] getFiles(String dir,int currentPage){
        File f=new File(dir);
        int pageSize=10;
        File[] allFiles=f.listFiles(new FileFilter() {//过滤掉目录 
            @Override
            public boolean accept(File f) { 
                return f.isFile()?true:false;
            }
        });System.out.println(allFiles.length);
        int init=(currentPage-1)*pageSize;
        if(init>allFiles.length){//页数太大
            return new File[0];
        }
        File[] output=Arrays.copyOfRange(allFiles, init, init+pageSize);
        if(init+10>allFiles.length){//不足一页的情况 去掉null
            int size=allFiles.length-init;
            output=Arrays.copyOf(output, size);
        }
        return output;
    }
}

------解决方案--------------------
要实现读完 多次调用getFiles方法即可
int idx=0;
File[] fs=null;

do fs=getFiles(path,idx++);
while(fs.length<10);


------解决方案--------------------
探讨

三楼这样就可以了。
另外循环的时候可以加上:判断是文件还是文件夹还是文件,如果是文件夹需要递归调用方法。

if(file.isFile()) //判断是否是文件


if(file.isDirectory()) //判断是否是文件夹