Delphi 获得文件大小的方法

Posted ----我是谁我在哪----

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 获得文件大小的方法相关的知识,希望对你有一定的参考价值。

Delphi 获得文件大小的方法 大概有这些:

  •   FileSizeByName(需要引用IdGlobal单元 ,XE版本已取消) 
  •   GetFileSize (use Windows ,仅支持windows)
  •   FileSize(不能获得正在使用的文件大小) 
  •   FileSeek 
  •   TFileStream.Size 
    1、FileSizeByName(需要引用IdGlobal单元,XE版本已取消) 
    
    if OpenDialog1.Execute then
    begin
      ShowMessage(IntToStr(FileSizeByName(OpenDialog1.Filename)));
    end;
    
    2、GetFileSize (use Windows ,仅支持windows)
    var
    FileHandle:integer;
    begin
    if OpenDialog1.Execute then
    begin
      FileHandle := FileOpen(OpenDialog1.FileName, 0);
      ShowMessage(IntToStr(GetFileSize(FileHandle, nil)));
      FileClose(FileHandle);
    end; end;
    
    3、FileSize(不能获得正在使用的文件大小) 
    var f: file;
    begin
    if OpenDialog1.Execute then
    begin
      AssignFile(f, OpenDialog1.FileName);
      Reset(f, 1);
      ShowMessage(IntToStr(FileSize(f)));
      CloseFile(f);
    end;
    end;
    
    4、FileSeek 
    var
    FileHandle:integer;
    begin
    if OpenDialog1.Execute then
    begin
      FileHandle := FileOpen(OpenDialog1.FileName, 0);
      ShowMessage(IntToStr(FileSeek(FileHandle,0,2)));
      FileClose(FileHandle);
    end;
    end;
    
    5、TFileStream.Size 
    var
    FS: TFileStream;
    begin
    if OpenDialog1.Execute then begin
      FS := TFileStream.Create(OpenDialog1.FileName, fmShareDenyNone);
      ShowMessage(IntToStr(FS.Size));
      FS.Free;
    end;
    end;

     

递归统计文件夹大小

递归统计文件夹大小

  1. 创建键盘录入对象Scanner

  2. 定义字符串接收用户输入的文件夹路径

  3. 根据文件夹路径创建文件对象

  4. 定义一个方法calculate用来计算指定文件夹的大小,接收文件参数,返回long类型数值表示文件夹的大小。

  5. 调用calculate方法传入文件夹对象,在该方法内部获得文件夹中所有文件,得到一个文件数组,定义一个变 量size累加每一个文件的大小,遍历文件数组,判断是否是文件,如果是文件则获得文件大小并累加到变量 size中,如果是文件夹,继续递归调用当前方法。

package com.test.Test02;

import java.io.File;

public class Test04 {
    public static void main(String[] args) {
        //获取一个文件夹大小并输出到控制台
        long l = calculate(new File("E:/abc"));

        System.out.println("l = " + l);
        //l = 52925438
        //    52929534
    }

    private static long calculate(File dir){
        //定义变量累积每一个文件的大小
        long size = 0;
        File[] files = dir.listFiles();
        for (File file : files) {
            if(file.isFile()){
                //是文件
                size += file.length();
            }else {
                //是文件夹
                size += calculate(file);
            }
        }
        return size;
    }
}

自己瞎捉摸出来的

package com.test.Test02;

import java.io.File;

public class Test05 {
    public static void main(String[] args) {
        addUp(new File("E:/abc"));
    }

    private static long size = 0;
    private static void addUp(File file) {
        if(file.isDirectory()){
            File[] files = file.listFiles();
            for (File f : files) {
                addUp(f);
            }
        }

        //不是文件夹,计算大小
        size += file.length();
        System.out.println("size = " + size);


    }
}

以上是关于Delphi 获得文件大小的方法的主要内容,如果未能解决你的问题,请参考以下文章

减小Delphi XE以上编译出来的文件大小

减小Delphi XE以上编译出来的文件大小

减小Delphi XE以上编译出来的文件大小

delphi怎么获取其他程序运行时的即时数据

使用delphi向oracle中写入大数据blob文件,文件大小1G左右,有没有啥方法能够解决呢?

大幅提升Delphi Datasnap数据传输效率的方法