import java.io.*;
import java.util.*;
class FileDemo
{
public static void main(String[] args)
{
File dir=new File("D:");
//showDir(dir,0);
//sop(getSum(10));
//delFile(dir);
List list=new ArrayList();
fileToList(dir,list);
File file=new File(dir,"java文件列表.txt");
writeToFile(list,file.toString());
}
public static void writeToFile(List<File> list,String 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 dir,List<File> list){//遍历目录,将指定文件存入到参数集合中
File[] files=dir.listFiles();
for(File file:files){
if(file.isDirectory())
fileToList(file,list);
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(list,str);
}
public static void searchString(File[] files,String 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(list,str);
}
}
}
}
丢失了哪些文件,看看是不是权限的问题,造成读取失败。
比如说怎么样的结构遍历不到?觉得逻辑没什么问题,倒是 File[] files=dir.listFiles();之后要检查一下files是否为null,否则遍历到空文件夹会有异常。
我D盘下又很多java文件,到现在为止,我还是没有找到没有遍历所有java文件的原因,时间紧迫,暂时不找了。有空了接着找原因!谢谢各位!