求大神帮忙编写一个Java程序显示指定目录中所有的文件和目录,包括文件大小以及类型信息。急求啊!!!

 我来答
百度网友fe6d0b6
2013-12-30 · TA获得超过275个赞
知道小有建树答主
回答量:397
采纳率:75%
帮助的人:264万
展开全部
package Test2;

import java.io.File;

public class TestFile {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("D:\\Java\\");
printFile(file,0);

}

/**
 * 输出文件树
 * @param file
 * @param l
 */
public static void printFile(File file,int l){
String str = new String();  //生成补充空格
for(int i=0;i<l;i++){
str +=" " ;
}
        //先输出自己后输出子目录或文件
formatPrint(file,str);

if(file.isDirectory()){  //判断是否为目录
File[] files = file.listFiles();  //获取目录下文件列表
for(File f:files){//递归输出文件
printFile(f,l+3);
}

}
}

/**
 * 格式化输出文件
 * @param file
 * @param str
 */
public static void formatPrint(File file,String str){
//先输出文件
String[] names = file.getName().split("[.]");
System.out.println(str+file.getName()  
+ "       "+names[names.length-1]+" 文件"
+ "       "+file.length());
}

}

运行结果:
Java       Java 文件       0
   JMF211e       JMF211e 文件       0
      bin       bin 文件       4096
         cuswork       cuswork 文件       4096
            com       com 文件       0
               sun       sun 文件       0
                  media       media 文件       0
                     util       util 文件       0
                        RegistryLib.class       class 文件       41569
            new_jmf.properties       properties 文件       36425
            RegistryLib.class       class 文件       41569
            RegistryLib.java       java 文件       173350
         JMF.ico       ico 文件       2238
         jmfcustomizer.exe       exe 文件       36864
         jmfinit.exe       exe 文件       36864
         jmfregistry.exe       exe 文件       36864
         jmstudio.exe       exe 文件       36864
      doc       doc 文件       0
         readme.html       html 文件       21381
      lib       lib 文件       4096
         customizer.jar       jar 文件       2068427
         jmf.jar       jar 文件       2082557
         jmf.properties       properties 文件       35951
         jmf.properties.orig       orig 文件       34740
         mediaplayer.jar       jar 文件       39078
         multiplayer.jar       jar 文件       63515
         sound.jar       jar 文件       294070
         soundbank.gm       gm 文件       1154250
      Uninst.isu       isu 文件       9519
肥美的羊羔
2013-12-30 · TA获得超过253个赞
知道小有建树答主
回答量:330
采纳率:100%
帮助的人:97.8万
展开全部
// 搜索指定目录的全部内容
public void test9() {
      String fileName = "d:" + File.separator;
      File file = new File(fileName);
      print(file);
}

public void print(File f) {
      if (f != null) {
          // 为目录则循环里面的内容
          if (f.isDirectory()) {
              File[] arr = f.listFiles();
              if (arr != null) {
                  for (File file : arr) {
                      // 递归调用
                      print(file);
                  }
              }
                  } else {
                  // 不为目录则打印出文件名
                  System.out.println(f.getAbsolutePath()+"\t大小:"+f.length()+"字节");
          }
      }
}


这几天刚好在自学IO, 这个例子应该很简单了吧. 最快回答那个我看了下还要复制一遍,貌似没有必要啊, 文件大了岂不是很浪费时间.  不过我这个自能打印出他的路径, 文件名用 .getName()就可以了, 大小是以字节为单位的. 你说的类型信息, 我没找到相应的方法, 不过应该不是java api方法能判定的吧, 应该是自己写个方法来判定, 根据文件名的后缀来判定.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woailuo帅
推荐于2017-11-26 · TA获得超过823个赞
知道小有建树答主
回答量:1354
采纳率:40%
帮助的人:585万
展开全部
读取文件夹下所有文件及文件夹用.list()就可以,返回文件名包括後缀名。
至於文件大小你试试这个:

public void copyFile(String oldPath, String newPath) { //复制文件
//System.out.println(oldPath+"***"+newPath);
try {
//int bytesum = 0;
int byteread = 0;

InputStream inStream = new FileInputStream(oldPath); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024]; //每次取用的大小
while ((byteread = inStream.read(buffer)) != -1) {
//bytesum += byteread; // 字节数 文件大小
//System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();

}catch (Exception e) {
System.out.println("copy file error");
e.printStackTrace();
}
}
把注释去了,里面的bytesum就是文件大小。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xmc125888
2013-12-30 · TA获得超过814个赞
知道小有建树答主
回答量:409
采纳率:0%
帮助的人:295万
展开全部
public void getFileInfo(String path){ File f = new File(path); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(f.isDirectory()){ System.out.println("目录:"+f.getName() +" 大小: "+(f.length()/1024)+"kb" +" 修改时间:"+ df.format( new Date(f.lastModified()))); File[] fs = f.listFiles(); for(File ff :fs){ getFileInfo(ff.getPath()); } }else{ System.out.println("文件:"+f.getName() +" 文件大小: "+(f.length()/1024)+"kb" +" 修改时间:"+df.format(new Date(f.lastModified()))); }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式