Java 获取指定目录下的文件和文件夹,并输出文件大小

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @classname FileSize
 * @escription 获取指定目录下的文件和文件夹,并输出文件大小
 * @author huanglei
 * @date 2022/3/29 3:44 下午
 * @version 1.0
 */
public class FileSize {

    public static void main(String[] args) throws IOException {
        long start = System.currentTimeMillis();
        String path = "/Users/huanglei/Downloads";
        getFile(path);
        long end = System.currentTimeMillis();
        System.out.println("total time: " + (end - start) + "ms");
    }

    private static void getFile(String path) throws IOException {
        File file = new File(path);
        File[] array = file.listFiles();

        List<String> list = new ArrayList<String>();

        for (int i = 0; i < (array != null ? array.length : 0); i++){
            long size = FileUtils.sizeOf(array[i]);
            String size2Show = FileUtils.byteCountToDisplaySize(size);
            String result = null;

            if(array[i].isFile()){
                result = "File name: " + array[i].getName() + "  size:" + size2Show;
            }else if(array[i].isDirectory()){
                result = "Directory name: " + array[i].getName() + "  size:" + size2Show;
            }

            list.add(result);
            System.out.println(result);
            FileUtils.writeLines(new File("/Users/huanglei/Desktop/filelist.txt"), list, "\n", false);
        }

    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,欢迎使用ChitGPT!对于您的问题,以下是一个Java程序实现,可以扫描指定路径下所有文件,将文件完整路径和文件大小写入txt文件,并输出执行时间: ``` import java.io.*; import java.util.*; public class FileScanner { public static void main(String[] args) { long startTime = System.currentTimeMillis(); // 记录开始时间 String path = "指定路径"; // 指定路径 File file = new File(path); if (!file.exists() || !file.isDirectory()) { // 如果路径不存在或不是一个文件夹 System.out.println("目录不存在或不是一个文件夹!"); return; } File[] files = file.listFiles(); // 获取所有文件 if (files == null || files.length == 0) { // 如果文件夹为空 System.out.println("文件夹为空!"); return; } List<String> list = new ArrayList<String>(); // 存储完整路径和文件大小的信息 for (File child : files) { if (child.isFile()) { // 如果是文件 long size = child.length(); // 获取文件大小 String info = child.getAbsolutePath() + "\t" + size; // 拼接完整路径和文件大小 list.add(info); } else if (child.isDirectory()) { // 如果是文件夹 scan(child, list); // 递归扫描文件夹 } } File output = new File("output.txt"); // 输出文件路径 try (BufferedWriter bw = new BufferedWriter(new FileWriter(output))) { for (String info : list) { bw.write(info); // 写入文件 bw.newLine(); } bw.flush(); } catch (IOException e) { e.printStackTrace(); } long endTime = System.currentTimeMillis(); // 记录结束时间 long duration = endTime - startTime; // 计算执行时间 System.out.println("扫描完毕,耗时:" + duration + "毫秒。"); } public static void scan(File file, List<String> list) { // 递归扫描文件夹 File[] files = file.listFiles(); if (files == null || files.length == 0) { return; } for (File child : files) { if (child.isFile()) { // 如果是文件 long size = child.length(); // 获取文件大小 String info = child.getAbsolutePath() + "\t" + size; // 拼接完整路径和文件大小 list.add(info); } else if (child.isDirectory()) { // 如果是文件夹 scan(child, list); } } } } ``` 这段程序会从指定路径开始扫描所有文件,并将完整路径和文件大小记录在一个List中。然后将List中的信息写入到output.txt文件中。同时,程序会记录执行时间并输出。希望以上信息能够帮助到您,如果您还有其他问题,请继续向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值