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

分享下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 zdz8207
*
*/
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();
}
}
}

 

http://www.blogjava.net/zdz8207/archive/2008/09/20/230155.html

版权所有,作者:老钟,如若转载,请注明出处:https://www.laoz.net/164.html

(0)
老钟
上一篇 2011 年 10 月 30 日 上午 10:32
下一篇 2011 年 11 月 22 日 下午 2:13

相关推荐

  • 5.1节后杂谈一篇,关于新驾照,扣12分的行为

    劳动节,休息了几天,本来有非常多事情要做的,但是因为有更加重要的事情,所以假期必须回家去办事! 这世道,汽车已经非常普遍了,所以无论如何,都尽量有个驾照吧!之前大学时代一直没有去考,后来工作本想在广州…

    2014 年 05 月 04 日
  • Eclipse快捷键大全(转载)

    Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,…

    闲话杂谈 2011 年 12 月 19 日
  • Java 中 finally 语句块的深度辨析【转】

    可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机。接下来我就带您一步一步的揭开这个 finally 的神秘面纱。 问题分析 首先来问大家一个问题:finally 语句块一定会执行吗? 很多人都认为 fi…

    闲话杂谈 2011 年 08 月 16 日
  • synchronized 的4种用法

    概述: synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法…

    闲话杂谈 2011 年 08 月 23 日
  • 谨慎处理 遍历ConcurrentHashMap

    最近发现内存中WriteThroughEntry数量突然很巨大,经过反复分析查找,发现是由于遍历ConcurrentHashMap不当导致的,遍 历时尽量使用values(),使用ConcurrentHashMap的entrySet()遍历会产生大量WriteThroughEntry对…

    闲话杂谈 2011 年 08 月 30 日
  • 杂谈,老钟这些日子都在做啥子了?为什么一直都没有更新

    很长一段时间没有更新博客了,所以呀,坚持是一件非常艰难的事情。 对于能坚持一直做好一件事情的人,想不成功都难呀,表示敬仰呀! 虽然我博客没有更新,但是我的事业还是依然坚持着,平时工作的时间太长了,都没…

    闲话杂谈 2015 年 09 月 16 日
  • 测试一下新编辑器的功能

    /**   * <p>   * 业务层<br/>   * 2012-02-09   * </p>   * @author Bo   *   */ publi…

    闲话杂谈 2012 年 03 月 22 日
  • 日语,50音

    偶尔一个机会,需要整理一下日语50音(中文应该是音标)   あ(a) い(i) う(u) え(e) お(o) か(ka) き(ki) く(ku) け(ke) こ(ko) さ(sa) し(shi) す(su) せ(se) そ(so) た(ta) ち(chi) つ(tsu) て(te) と(to) …

    闲话杂谈 2012 年 03 月 01 日
  • Android Please execute ‘adb uninstall com.ims.poc.ui’ in a shell.

    [2010-03-23 11:57:49 - Poc]Re-installation failed due to different application signatures. [2010-03-23 11:57:49 - Poc]You must perform a full uninstall of the application. WARNING: This will remove t…

    闲话杂谈 2012 年 01 月 30 日
  • Eclipse中导入工程提示:invalid project description 解决办法

    打开工程目录下的 .project文件, 把<name>标签中的文字改成自己的工程名

    闲话杂谈 2012 年 02 月 08 日