黑马程序员技术交流社区
标题:
第三期题目求满分代码学习
[打印本页]
作者:
coqns
时间:
2012-12-10 11:00
标题:
第三期题目求满分代码学习
本帖最后由 coqns 于 2012-12-10 18:32 编辑
上周论坛发布了第三期题目:指定一个目录,用递归的方法不断递进的扫描整个目录,如果不是文件夹是文件,则停止扫描,如果是文件夹,则一直往里扫描查询直到没有文件夹为止。我的代码如下,当时得了6分(满分是10分),最后自己又想了下,可能是自己没考虑到隐藏文件、异常什么的吧?在这里求满分代码,学习一下!
import java.io.*;
public class FileDemo
{
public static void main(String[] args) throws IOException
{
//指定要扫描的目录
File dir=new File("d:\\myFile");
//开始扫描
StringBuilder result=new StringBuilder();
result.append("目录列表:\r\n");
//获取扫描结果
String r=showDir(dir,0,result);
//创建txt文件并写入结果
FileWriter writer=new FileWriter("d:\\log.txt");
writer.write(r);
//刷新并关闭流
writer.close();
}
//扫描目录并返回字符串结果
public static String showDir(File dir,int level,StringBuilder result )
{
//字符串增加:(目录层级+目录名字)
result.append(getLevel(level)+dir.getName()+"\r\n");
level++;
//文件列表
File[] files=dir.listFiles();
for (int i = 0; i < files.length; i++)
{
//如果为目录则递归调用showDir()
if (files[i].isDirectory())
showDir(files[i],level,result);
//如果不是目录则字符串增加:(目录层级+文件路径)
else
result.append(getLevel(level)+files[i]+"\r\n");
}
return result.toString();
}
//所在目录层级返回相应空格
public static String getLevel(int level)
{
StringBuilder sb=new StringBuilder();
sb.append("|--");
for (int i = 0; i < level; i++)
sb.insert(0," ");
return sb.toString();
}
}
复制代码
作者:
宫明星
时间:
2012-12-10 12:39
顶一下。。
作者:
刘子义
时间:
2012-12-10 13:26
题目好像还要求打印到一个txt文档里吧,有IO的东西,LZ这里貌似只有递归
作者:
coqns
时间:
2012-12-10 15:08
刘子义 发表于 2012-12-10 13:26
题目好像还要求打印到一个txt文档里吧,有IO的东西,LZ这里貌似只有递归
晕,发错代码了,我重发了一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2