您的位置:首页 > 编程语言 > Java开发

分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里

2014-09-01 14:01 1281 查看
分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里。

由于公司要求读取项目下所有jsp文件,并读取开头的自定义的注释来生成类似javadoc的东西进行页面管理。

而读取jsp源代码需要知道文件的绝对路径,所有通过项目文件夹路径先取出所有jsp文件目录再循环解析。

最后通过搜索和自己的努力写成一个完整的测试类,供以后查阅,同时分享一下。

ps:通过这个测试类,复习了下数组List Iterator io 泛型和递归函数,虽然很简单但综合起来用还是遇到了些小问题化了一个多小时调试,例如有些异常文件没有后缀名的用.去判断返回的索引就是-1了,如果没有判断后面的操作就出现异常了,因此我在关键地方加了注释,希望对大家有帮助。

import java.io.*;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/**

* 读取目录及子目录下指定文件名的路径 并放到一个数组里面返回遍历

* @author huangmayi

*

*/

public class FileViewer {

public static void main(String[] args) {

List arrayList = FileViewer.getListFiles("d:/ajax","html",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";

}

appendMethod("d:/ajax/menu.txt",message);

}

}

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 FileViewer.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();

if(suffix !=null)

{

int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引

String tempsuffix = "";

if(begIndex != -1)//防止是文件但却没有后缀名结束的文件

{

tempsuffix = filePath.substring(begIndex + 1, filePath.length());

}

if(tempsuffix.equals(suffix))

{

fileList.add(filePath);

}

}

else

{

//后缀名为null则为所有文件

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();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐