本帖最后由 吴上储 于 2011-12-13 13:08 编辑
李建锋 发表于 2011-12-13 12:19
恩,就是的,那你说怎么遍历指定位置的文件,要防止空指针异常 !
- package com.itheima.find;
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- /**
- * 读取目录及子目录下指定文件名的路径 并放到一个数组里面返回遍历
- * @author 转自 zdz8207
- *
- */
- public class FildFile {
- public static void main(String[] args) {
- //List arrayList = FileViewer.getListFiles("d:/com","html",true);
- //读取f:/abc下的以txt 结尾的文件 如有子目录,包含之(后缀名为null则为所有文件)
- //List arrayList = FileViewer.getListFiles("f:/abc","txt",true);
- //经试验,后缀不能不填写,否则编译不通过,提示“FileViewer.java:17: 非法的表达式开始”。
- //另外后缀为""时的情况需要 增加到IF 里去,否则 后缀为""时,不会显示所有文件
- List arrayList = FildFile.getListFiles("E:/music","mp3",true); //路径 + 文件类型 + 是否遍历子目录
- if(arrayList.isEmpty())
- {
- System.out.println("没有符号要求的文件");
- }
- else
- {
- String message = "";
- message +="符号要求的文件数:" + arrayList.size() + "\r\n";
- System.out.println(message);
- for (Iterator i = arrayList.iterator(); i.hasNext();)
- {
- String temp = (String) i.next();
- System.out.println(temp);
- message += temp + "\r\n";
- }
- //将显示的文件路径写到指定的文件里,若文件不存在,则提示IO异常
- //java.io.FileNotFoundException: d:\ajax\menu.txt (系统找不到指定的路径。)
- //如果 加个文件是否存在的判断,如不存在就在当前目录新建一个,则更好。
- appendMethod("d:/menu.txt",message); //查询结果保存在d:/menu.txt
- }
- }
- public static List<String> fileList = new ArrayList<String>();
- /**
- *
- * @param path 文件路径
- * @param suffix 后缀名
- * @param isdepth 是否遍历子目录
- * @return
- */
- public static List getListFiles(String path, String suffix, boolean isdepth)
- {
- File file = new File(path);
- return FildFile.listFile(file ,suffix, isdepth);
- }
- public static List listFile(File f, String suffix, boolean isdepth)
- {
- //是目录,同时需要遍历子目录
- if (f.isDirectory() && isdepth == true)
- {
- File[] t = f.listFiles();
- for (int i = 0; i < t.length; i++)
- {
- listFile(t[i], suffix, isdepth);
- }
- }
- else
- {
- String filePath = f.getAbsolutePath();
- //System.out.println("suffix = "+suffix);
- if(suffix =="" || suffix == null)
- {
- //后缀名为null则为所有文件
- fileList.add(filePath);
- }
- else
- {
- int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引
- String tempsuffix = "";
- if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
- {
- tempsuffix = filePath.substring(begIndex + 1, filePath.length());
- }
- if(tempsuffix.equals(suffix))
- {
- fileList.add(filePath);
- }
- }
- }
- return fileList;
- }
- /**
- * 方法追加文件:使用FileWriter
- * @param fileName
- * @param content
- */
- public static void appendMethod(String fileName, String content)
- {
- try
- {
- //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
- FileWriter writer = new FileWriter(fileName, true);
- writer.write(content + "\r\n");
- writer.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
复制代码 |