比如说:一个目录下有很多个文件(不知道文件数量),如何一次性读取十个文件,就是说10个10个的读取文件读完为止,然后将文件内容放到内存中!!
求各位大牛帮帮忙啦!小弟感激不尽
------解决方案--------------------------------------------------------
File f=new File("E:\\")
File[] fd=f.listFile();
这样fd数组就是获得目录f下的所有文件。
想要10个10个读取就用for循环吧
------解决方案--------------------------------------------------------
三楼这样就可以了。
另外循环的时候可以加上:判断是文件还是文件夹还是文件,如果是文件夹需要递归调用方法。
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);
------解决方案--------------------------------------------------------