问题描述
- 利用递归方法遍历文件存储到指定文件,为何不能遍历尽所有的指定文件?源码如下:
- import java.io.*;
import java.util.*;
class FileDemo
{
public static void main(String[] args)
{
File dir=new File(""D:"");
//showDir(dir0);
//sop(getSum(10));
//delFile(dir);
List list=new ArrayList();
fileToList(dirlist);
File file=new File(dirjava文件列表.txt"");
writeToFile(listfile.toString());}public static void writeToFile(List<File> listString javaListFile){//创建文件写入输出流,将集合内文件的据对路径储到指定文件 BufferedWriter bw=null; try{ bw=new BufferedWriter(new FileWriter(javaListFile)); for(File file:list){ String path=file.getAbsolutePath(); bw.write(path); bw.newLine(); bw.flush(); } } catch(IOException e){ throw new RuntimeException(""写入文件失败""); } finally{ try{ if(bw!=null) bw.close(); } catch(IOException ex){ throw new RuntimeException(""流文件不存在""); } }}public static void fileToList(File dirList<File> list){//遍历目录,将指定文件存入到参数集合中 File[] files=dir.listFiles(); for(File file:files){ if(file.isDirectory()) fileToList(filelist); else{ if(file.getName().endsWith("".java"")) list.add(file); } }}}
解决方案
你可以参考下改改
import java.util.*;import java.io.*;public class ReadStringAndPrintPath { public static void main(String[] args) { System.out.println(""Hello World!""); String str = ""test""; File file = new File(""a""); File[] list = file.listFiles(); searchString(liststr); } public static void searchString(File[] filesString str){ for(int i = 0 ; i < files.length; i ++){ if(files[i].isFile()){ //是文件,搜索是否存在字符串 try{ Scanner scan = new Scanner(files[i]); while(scan.hasNext()){ if(scan.nextLine().indexOf(str) != -1){ System.out.println(files[i].getAbsolutePath()); break; } } }catch(IOException ex){ ex.printStackTrace(); } }else{ //是文件夹 File[] list = files[i].listFiles(); searchString(liststr); } } }}
解决方案二:
丢失了哪些文件,看看是不是权限的问题,造成读取失败。
解决方案三:
比如说怎么样的结构遍历不到?觉得逻辑没什么问题,倒是 File[] files=dir.listFiles();之后要检查一下files是否为null,否则遍历到空文件夹会有异常。
解决方案四:
我D盘下又很多java文件,到现在为止,我还是没有找到没有遍历所有java文件的原因,时间紧迫,暂时不找了。有空了接着找原因!谢谢各位!
解决方案五:
grep 递归指定文件遍历方法
时间: 2024-08-04 12:28:51