如何显示子目录内的文件列表?各位高手指点哈~

helloni 2003-02-08 06:10:55
我想做一个能列出该目录下的所有文件和所有子目录内的文件列表,可就是无法显示子目录内的文件列表,望高手指点迷津。



import java.io.*;
public class Dir
{
public static void main (String [] args)
{
File f=new File(".");
System.out.println("Files in "+f.getAbsolutePath());
String str[]=f.list();

int id=0;
int inf=0;
int inf1=0;
int inf2=0;
long l=0;

for (int i=0;i<str.length;i++)
{
File t=new File(str[i]);
if (t.exists())
{
if (t.isFile())
{
System.out.println(str[i]+"\t"+t.length());
inf++;
l=l+t.length();
}
if (t.isDirectory())
{
System.out.println(str[i]+"\t<Dir>");
id++;
String st=t.getPath().toString();
File t1=new File(st,".");
String str2[]=t1.list();
for (int j=0;j<str2.length;j++)
{
File t2=new File(str2[j]);
if (t2.exists())
{
System.out.println(str2[j]+"\t"+t2.length());
inf1++;
l=l+t2.length();
}
}
}
}
}
inf2=inf+inf1;
System.out.println(inf2+"files\t"+l+"bytes");
System.out.println(id+"Dirs");
}
}
...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xycleo 2003-02-09
  • 打赏
  • 举报
回复
奇是不多!!核心的代码就几句!!其他的都是文件相关信息

Sunboyjava 2003-02-09
  • 打赏
  • 举报
回复
我想知道这么大的回复需要多少精力多大的耐心
但知道是十分的热诚
helloni 2003-02-09
  • 打赏
  • 举报
回复
非常感谢,但感觉还是多了点哈~
hoxisoft 2003-02-08
  • 打赏
  • 举报
回复
拜个晚年,过年好!
xycleo 2003-02-08
  • 打赏
  • 举报
回复
<html>
<head>
<style>
<!--
A { COLOR: Green; TEXT-DECORATION: none; }
//--></style>
<title>资源管理器</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript">
function sub()
{
document.form1.action.value="update";
document.form1.submit();
}
</script>
</head>


<body bgcolor="#99CCFF">
<form name="form1" method="post" action="filelist.jsp">
<input type="hidden" name="action" value="">
<table width="600" border="1" cellspacing="0" cellpadding="0" bgcolor="#00FFFF">
<tr bgcolor="#FFCC66" bordercolor="#FFCC66">
<td width="110">工具栏</td>
<td colspan="6">
<div align="right"><marquee><a href="#"><%=showTime()%></a></marquee> </div>
</td>
</tr>
<tr bgcolor="#FFFFFF" bordercolor="#FFCC66">
<td width="110">新建目录</td>
<td width="75">时间日期</td>
<td width="86">其它操作</td>
<td width="101">其它操作</td>
<td width="73">其它操作</td>
<td colspan="2" width="140"> </td>
</tr>
</table>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr bordercolor="#99CCFF">
<td colspan="2">请输入路径:
<input type="text" name="path" value="<%=filePath%>">
选择路径
<input type="button" name="listfile" value="List File" onClick="sub()">
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="145">文件数目:<%=rows%>个</td>
<td width="455">文件大小:<%=fileStdlength(fileTotalLength)%></td>
</tr>
</table>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr bgcolor="#FFCC66" bordercolor="#FFCC66">
<td width="135">文件名称</td>
<td width="124">
<div align="right">文件大小</div>
</td>
<td width="202">
<div align="left"> 文件类型</div>
</td>
<td width="202">文件最后修改时间</td>
<td width="46"> </td>
<td width="46"> </td>
<td width="47"> </td>
</tr>
<%
if(lastpath!=null)
{
%>
<tr bgcolor="#FFFFFF" bordercolor="#FFFFFF">
<td colspan="7"><a href=javascript:window.history.back()>..</a></td>
</tr>
<%
}
%> <%
for(int i = 0 ; i <rows ; ++ i)
{
if(i%2==0)
{
%>
<tr bgcolor="#FFFFFF" bordercolor="#FFFFFF"> <%
}
else
{
%>
<tr bgcolor="#FFFFFF" bordercolor="#FFFFFF"> <%
}
%>
<td nowrap valign="middle"> <%if(isDirectory[i].equals("N")){%> <img src="<%=showFileIcon(fileName[i])%>" width="16" height="16"><%=fileName[i]%>
<%}else{%> <img src="dir.JPG" width="16" height="16"><font color="#FF0000"><a href='filelist.jsp?path=<%=filelist[i].toString()+"\\"%>&action=update&lastpath=<%=filePath%>'><%=fileName[i].toUpperCase()%></a></font>
<%}%> </td>
<td align="right"> <%if(isDirectory[i].equals("N")){%> <%=fileStdlength(fileLength[i])%>
<%}else{%><font color="#FFFFFF">.</font><%}%> </td>
<td>
<div align="left"> <%if(isDirectory[i].equals("N")){%><%=fileStdAttribute(fileName[i])%><%}else{%>文件夹<%}%></div>
</td>
<td><%=fileModifyTime[i]%> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
xycleo 2003-02-08
  • 打赏
  • 举报
回复
<%!
String fileStdAttribute(String ttfile)//正确显示文件的属性
{
String fileAttribute = null;
if(ttfile!=null)
{
File ttFile = new File(ttfile);
if(!ttFile.isDirectory())
{
String fileExtName = lastSpecialString(ttfile,'.').toUpperCase();
fileAttribute = "未知文件";
if(fileExtName.equals("TXT"))
fileAttribute = "文本文件";
if(fileExtName.equals("JPG"))
fileAttribute = "JPG格式的图像文件";
if(fileExtName.equals("GIF"))
fileAttribute = "GIF格式的图像文件";
if(fileExtName.equals("BMP"))
fileAttribute = "BMP格式的图像文件";
if(fileExtName.equals("SYS"))
fileAttribute = "系统文件";
if(fileExtName.equals("EXE"))
fileAttribute = "应用程序";
if(fileExtName.equals("DOC"))
fileAttribute = "word文档文件";
if(fileExtName.equals("JSP"))
fileAttribute = "JSP源文件";
if(fileExtName.equals("INT"))
fileAttribute = "信息配置文件";
if(fileExtName.equals("WAV"))
fileAttribute = "声音文件";
if(fileExtName.equals("MP3"))
fileAttribute = "MP3文件";
if(fileExtName.equals("AVI"))
fileAttribute = "视频文件";
if(fileExtName.equals("HTM"))
fileAttribute = "网页文件";
if(fileExtName.equals("HTML"))
fileAttribute = "网页文件";
if(fileExtName.equals("ION"))
fileAttribute = "ICO图标文件";
if(fileExtName.equals("DLL"))
fileAttribute = "动态连接文件";
if(fileExtName.equals("RAR"))
fileAttribute = "WINRAR压缩文件";
if(fileExtName.equals("ZIP"))
fileAttribute = "WINZIP压缩文件";
if(fileExtName.equals("PDF"))
fileAttribute = "PDF文件";
if(fileExtName.equals("CHM"))
fileAttribute = "CHM帮助文件";
if(fileExtName.equals("HLP"))
fileAttribute = "HLP帮助文件";
}
}

return fileAttribute;
}
%>
<%
String filePath =(String)request.getParameter("path");
String lastpath = (String)request.getParameter("lastpath");
String action = (String)request.getParameter("action"); //action为update时表示要进行处理

String[] fileName = null; //文件名称
File[] filelist = null; //文件列表(包括目录与文件)
String[] isDirectory =null; //是否为目录
long[] fileLength = new long[2] ; //文件的长度
String[] fileModifyTime = null; //文件的修改时间
int rows = 0; //文件数量
long fileTotalLength = 0;
if(action!=null && action.equals("update"))//实际处理部分
{

//判断路径的合法性,存不存在,是不是没有值,输入的是不是目录
if(filePath==null || filePath.length()==0)
{
out.println("请选择路径");
return;
}
File dir = new File(filePath);
if(!dir.exists())
{
out.println("该目录不存在");
return;
}
if(!dir.isDirectory())
{
out.println("你输入的不是目录");
return;
}

//获取文件信息
fileName = dir.list();
//fileName = sortByFileName(fileName);
filelist = dir.listFiles();
rows = filelist==null ? 0 : filelist.length;
isDirectory = new String[rows];
fileLength = new long[rows];
fileModifyTime = new String[rows];
for(int i = 0 ; i < rows ; ++ i)
{

if(filelist[i].isDirectory())
{
isDirectory[i] = "Y";
}
else
{
isDirectory[i] = "N";
}
fileLength[i] = filelist[i].length();
fileTotalLength = fileTotalLength + fileLength[i];
fileModifyTime[i] = String.valueOf(filelist[i].lastModified()/(1000*24*3600)/365+1970)+"-"; //年份
fileModifyTime[i] = fileModifyTime[i] + String.valueOf(filelist[i].lastModified()%(315360))+"-";//月份
}

}
%>
xycleo 2003-02-08
  • 打赏
  • 举报
回复
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import='java.sql.*,java.io.*,java.text.*,java.lang.*'%>
<%!
static String[] sortByFileName(String[] soreSource)//按文件名排序(文件夹在最前面,文件名在后面,相同的按英文字母顺序排列)
{
String sortTemp = null ; //交换的临时变量
for( int i = 0 ; i < soreSource.length ; ++i )//用bubblesort(冒泡法)排序。
{
for(int j = 0; j < soreSource.length-i-1 ; ++j )
{
if(soreSource[j].compareTo(soreSource[j+1]) > 0)
{
sortTemp = soreSource[j];
soreSource[j] = soreSource[j+1];
soreSource[j+1] = sortTemp;
}
}
}
return soreSource;
}
%>
<%!
String lastSpecialString(String ttstr ,char specString)
{
int specLength = 0;
for(int i = 0 ; i < ttstr.length() ; ++ i)
{
if(ttstr.charAt(i)==specString)
specLength = i;
}
return ttstr.substring(specLength+1);
}

%>
<%!
//函数用于显示文件的图标,传入文件名称,根据后缀名显示图标
String showFileIcon(String fileName)
{
String iconName = null;
if(fileName!=null)
{
File tempFile = new File(fileName);
if(!tempFile.isDirectory())
{
String fileExtName = lastSpecialString(fileName,'.').toUpperCase();
iconName = "nofile.jpg";
if(fileExtName.equals("TXT"))
iconName = "TXT.JPG";
if(fileExtName.equals("JPG"))
iconName = "JPG.JPG";
if(fileExtName.equals("GIF"))
iconName = "GIF.JPG";
if(fileExtName.equals("BMP"))
iconName = "BMP.JPG";
if(fileExtName.equals("SYS"))
iconName = "SYS.JPG";
if(fileExtName.equals("EXE"))
iconName = "EXE.JPG";
if(fileExtName.equals("DOC"))
iconName = "DOC.JPG";
if(fileExtName.equals("JSP"))
iconName = "JSP.JPG";
if(fileExtName.equals("INT"))
iconName = "INT.JPG";
if(fileExtName.equals("WAV"))
iconName = "WAV.JPG";
if(fileExtName.equals("MP3"))
iconName = "MP3.JPG";
if(fileExtName.equals("AVI"))
iconName = "AVI.JPG";
if(fileExtName.equals("HTM"))
iconName = "HTM.JPG";
if(fileExtName.equals("HTML"))
iconName = "HTM.JPG";
if(fileExtName.equals("ZIP"))
iconName = "ZIP.JPG";
if(fileExtName.equals("RAR"))
iconName = "RAR.JPG";
if(fileExtName.equals("HLP"))
iconName = "HLP.JPG";
if(fileExtName.equals("CHM"))
iconName = "CHM.JPG";
if(fileExtName.equals("PDF"))
iconName = "PDF.JPG";
if(fileExtName.equals("DLL"))
iconName = "DLL.JPG";
if(fileExtName.equals("SWF"))
iconName = "SWF.JPG";
if(fileExtName.equals("LOG"))
iconName = "TXT.JPG";
if(fileExtName.equals("COM"))
iconName = "BAT.JPG";
if(fileExtName.equals("INI"))
iconName = "INI.JPG";
if(fileExtName.equals("BAT"))
iconName = "BAT.JPG";
}
}
return iconName;
}
%>
<%!
String showTime()//显示当前的详细日期时间
{
java.util.Date currDate = new java.util.Date();
String currentTime = "今天是";
currentTime = currentTime
+ (1900 + currDate.getYear()) + "年"
+ (1 + currDate.getMonth()) + "月"
+ (currDate.getDate()) + "日"
+ " 星期 " + (currDate.getDay());
return currentTime;
}
%>
<%!
String fileStdlength(long fileLenByByte)//正确显示文件的长度
{
String fileLenByText = String.valueOf(fileLenByByte) + "字节";
if(fileLenByByte>1024)
fileLenByText = fileLenByByte/1024 + "KB";
if(fileLenByByte>(1024*1024))
fileLenByText = fileLenByByte/(1024*1024) + "MB";
return fileLenByText;
}
%>
panxiongfei 2003-02-08
  • 打赏
  • 举报
回复
gz
网络咖啡 2003-02-08
  • 打赏
  • 举报
回复
使用递归啊
一、启用guest来宾帐户; 二、控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户; 三、我的电脑→工具→文件夹选项→查看→去掉“使用简单文件共享(推荐)”前的勾; 四、设置共享文件夹; 五、控制面板→管理工具→本地安全策略→本地策略→安全选项里,把“网络访问:本地帐户的共享和安全模式”设为“仅来宾-本地用户以来宾的身份验证”(可选,此项设置可去除访问时要求输入密码的对话框,也可视情况设为“经典-本地用户以自己的身份验证”); 六、右击“我的电脑”→“属性”→“计算机名”,该选项卡中有没有出现你的局域网工作组名称,如“work”等。然后单击“网络 ID”按钮,开始“网络标识向导”:单击“下一步”,选择“本机是商业网络的一部分,用它连接到其他工作着的计算机”;单击“下一步”,选择“公司使用没有域的网络”;单击“下一步”按钮,然后输入你的局域网的工作组名,如“work”,再次单击“下一步”按钮,最后单击“完成”按钮完成设置。 访问网上邻居时显示:" windows xp系统访问局域网时显示 "WORKGROUP无法访问.您可能没有权限使用网络资源.请与这台服务器的管理员联系以查明您是否有访问权限.此工作组的服务器的列表当前无法使用." 我用的是xp系统 我也遇到过这样的情况,当时也是着急得不轻,后来看到了以下的内容,照着一步步的做了做,真的好了。内容不少,但是仍然希望你能耐住性子,仔细的看看自己属于那种情况,应该会有所收获。 局域网互访 - [ 网络 ] 我也是类似问题。 以前一个局域网10多台机子互访问。安了蕃茄花园v2.3,感觉主题漂亮,桌面壁纸自动换,很爽。访问局域网计算机没问题。可网内其它机子在工作组内能看到我的机子,但打不开。说什么“没有权限”。所有设置都作了如下改动(网上找的),依然无效,何故?但求高手指点。 “网上邻居”无法互访问题解决方法大全 “网上邻居”无法互访的问题实在是太常见了,无论在学校,网吧还是家里多台电脑联机,都有可能遇到网上邻居无法互访的故展。“网上邻居”无法访问的故障多种多样,总结起来基本上有下面的几个: 1,没有共享资源/共享服务未启用。 症状:电脑与电脑间可以Ping通,但无法访问共享资源,在“计算机管理”中查看“本地共享”后会弹出“没有启动服务器服务”的错误对话框。 解决:在控制面板-管理工具-服务中启动Server服务。并设置“启动类型”为“自动”。 2,IP设置有误。 症状:双机之间无法互Ping,连接用的双绞线经过测试没有问题,没有安装防火墙。 解决:检查两台电脑的IP是否处在同一网段,还有子掩码是否相同。 3,WINXP默认设置不正确。 症状:从WIN98/2000/2003上无法访问另一台WINXP的机器。 解决:在“控制面板”中的“用户帐户”启用Guest帐号。然后在运行中输入secpol.msc启动“本地安全策略”。 本地策略 -> 用户权利指派,打开“从网络访问此计算机”,添加Guest帐户 本地策略 -> 安全选项,禁止"帐户:使用空白密码的本地帐户只允许进行控制台登陆"。 另外有时还会遇到另外一种情况:访问XP的时候,登录对话框中的用户名是灰的,始终是Guest用户,不能输入别的用户帐号。 解决:本地策略 -> 安全选项 -> "网络访问:本地帐户的共享和安全模式",修改为"经典-本地用户以自己的身份验证" 4,系统漏洞修补软件修改了安全策略。 症状:在“网上邻居”中可以看到对方的计算机,但是访问共享时却提示“没有权限访问网络” 解决:在开始菜单运行中输入secpol.msc启动“本地安全策略”,本地策略 -> 用户权利分配,打开“拒绝从网络访问这台计算机”,删除guest用户。 5,防火墙规则。 症状:安装了防火墙(包括WINXP系统自带的防火墙),出现无法Ping通,或者是访问共享资源的时候提示"XXX无法访问"、"您可能没有权限使用网络资源"、"请与这台服务器的管理员联系以查明您是否有访问权限"、"找不到网络路径"等类似的提示。 解决:停止防火墙或者添加局域网的访问规则。 WINXP自带的防火墙:打开控制面板 -> 网络和Internet连接 -> Windows防火墙 -> 例外,勾选“文件和打印机共享”。 6,Win2000/XP与Win98互访 症状:Ping命令可以通过,但无法在“网上邻居”中实现互访。 解决:在WIN2000/XP系统中:控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组 -> 用户,在Guest帐户上点击鼠标右键,选择属性,在常规项里取消

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧