求正解:java遍历输出指定目录下的所有目录与文件名 5

importjava.io.File;publicclassTestFile{/***@paramargs*/publicstaticvoidmain(String[]a... import java.io.File;

public class TestFile {

/**
* @param args
*/
public static void main(String[] args) {
File f = new File("d:\\");
boolean b = false;
try {
public static void fileList(File file){
File[] files = f.listFiles();
if (files != null) {
for (File f1 : files) {
System.out.println(f1.getAbsolutePath());
fileList(f1);
}
}
}
} catch (Exception e) {

}
}
}

程序错在哪里,需要怎样改采正确,麻烦了
展开
 我来答
火七暴十唯零23
2011-09-12 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.6万
采纳率:0%
帮助的人:4628万
展开全部
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:/com","html",true);

//读取d:/com下的以java 结尾的文件 如有子目录,包含之(后缀名为null则为所有文件)
//List arrayList = FileViewer.getListFiles("d:/com","java",true);

//经试验,后缀不能不填写,否则编译不通过,提示“FileViewer.java:17: 非法的表达式开始”。
//另外后缀为""时的情况需要 增加到IF 里去,否则 后缀为""时,不会显示所有文件
List arrayList = FileViewer.getListFiles("d:/com","",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);
}
}
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();

System.out.println("suffix = "+suffix);
if(suffix =="" || suffix == null)
{
//后缀名为null则为所有文件
System.out.println("----------------");
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);
}
System.out.println("|||||||||||||||||||");
}

}

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();
}
}
}
9月
dark19861201
推荐于2018-04-05 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1796万
展开全部
把方法的定义放到try外:
import java.io.File;

public class TestFile {

/**
* @param args
*/
public static void main(String[] args) {
File f = new File("d:\\");
boolean b = false;
try {
TestFile .fileList(f);
} catch (Exception e) {

}
}

public static void fileList(File file) {
File[] files = file.listFiles();
if (files != null) {
for (File f1 : files) {
System.out.println(f1.getAbsolutePath());
fileList(f1);
}
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
64092535
2011-09-11 · 贡献了超过174个回答
知道答主
回答量:174
采纳率:0%
帮助的人:43万
展开全部
。。。。。。。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wj465771527
2011-09-12 · TA获得超过156个赞
知道答主
回答量:175
采纳率:0%
帮助的人:96.8万
展开全部
java的方法里不能写方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式