【问题标题】:Convert an array of file path to array of files and calculate the size of each将文件路径数组转换为文件数组并计算每个文件的大小
【发布时间】:2013-05-07 05:00:51
【问题描述】:

我有一个JTextField,用户必须在其中输入以逗号分隔的文件路径

我将文本字段值放入一个数组中:

String[] filename = filename.split(","); // where filename is the jtextfield value

我需要检查数组中每个文件的大小。

如果文件大小超过 10 MB,我需要通知用户。

Java中如何将文件路径数组转换为文件数组并计算每个文件的文件大小?

我尝试使用:

File[] files = new File[filename.length];    

for(int i=0;i < filename.length;i++){    
    long filesizeinbytes=files[i].length;    
    long filesizeinkb= filesizeinbytes/1024;    
    long filesizeinmb=filesizeinkb/1024;    
}

【问题讨论】:

    标签: java arrays swing jtextfield filesize


    【解决方案1】:

    您忘记initialize files 数组中的每个元素。它会抛出一个NPE

    long totalFileSizeOfAllFiles = 0;
    for(int i=0;i < filename.length;i++){    
        files[i] = new File(filename[i]); // This is required.
        long filesizeinbytes=files[i].length(); // Also length is a method.
        totalFileSizeOfAllFiles+=filesizeinbytes; // To get the total size of all the files present.
    

    P.S:-这里的假设是filename[] 数组中的每个条目都是所考虑的每个文件的正确绝对/相对路径

    【讨论】:

    • 那么这应该工作。请注意,我没有提供if 条件来检查size &gt; 10 MB 场景。请添加它并检查它是否有效!
    • 没有。当我打印 filesizeinmb 时,它显示 0 MB。我有大约 5 个 excel 文件。每个大小约为 55 kb
    • 需要查看数组中文件的总文件大小
    • 无论我对代码进行什么更改,filesizeinmb 仅显示 o MB
    • filesizeinbytes 和 filesizeinkb 显示正确。但 filesizeinmb 显示 0 MB。
    【解决方案2】:

    这里好像少了什么 你在哪里创建数组内的 File 对象

    File[] files = new File[filename.length];    
    for(int i=0;i < filename.length;i++){    
        File f = new File(filename[i]);
        long filesizeinbytes=f.length();    
        long filesizeinkb= filesizeinbytes/1024;    
        long filesizeinmb=filesizeinkb/1024;    
    

    }

    【讨论】:

      【解决方案3】:
      for(String path:fileName){
      File file=new File(path);
      
      long fileSizeInBytes = file.length();
      long fileSizeInKB = fileSizeInBytes / 1024;
      long fileSizeInMB = fileSizeInKB / 1024;
      
      if (fileSizeInMB > 10) {
       // code to iform user
      }
      }
      

      【讨论】:

      • 对不起,我以为我已经写了,但错过了那部分。但是,大小总是说,只有 0MB ......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2015-03-16
      • 2012-02-06
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多