Delphi获取文件的大小(实际&物理)

源:获取文件的大小(实际&物理)

class function TDuoFile.GetFileSize(const AFile: TFileName): Int64;
var sr:TSearchRec;
begin
  if FindFirst(AFile,faAnyFile and (not faDirectory),sr) = 0 then
    Result := sr.Size
  else
    Result := 0;
  FindClose(sr);
//  Windows.GetFileSizeEx()
// 这个函数是新API

// 另一种写法
//var hh:THandle;dwSizeLow,dwSizeHigh:Cardinal;
//begin
//  hh := FileOpen(PChar(OpenDialog1.FileName),fmOpenRead);
//  dwSizeLow := GetFileSize(hh,@dwSizeHigh);
//  Result := dwSizeHigh shl 32 + dwSizeLow;
//  CloseHandle(hh);
//end;
end;

class function TDuoFile.GetFileSizeCompressed(const AFile: TFileName): Int64;
begin
  Int64Rec(Result).Lo := GetCompressedFileSize(PAnsiChar(AFile),@Int64Rec(Result).Hi);
// 另一种写法
//var dwSizeLow,dwSizeHigh:Cardinal;
//begin
//  dwSizeLow := GetCompressedFileSize(PAnsiChar(AFile),@dwSizeHigh);
//  Result := dwSizeHigh shl 32 + dwSizeLow;
//end;
end;

进过测试,

如果是通常的文件,并没有发现这两个函数的不同之处。

都是返回“属性/大小”。

但是如果是压缩过的文件,那么后者返回的是“属性/占用空间”。

时间: 2024-11-07 06:49:32

Delphi获取文件的大小(实际&物理)的相关文章

用fseek和ftell获取文件的大小

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc,char *argv[]) { int n=0; FILE *fp; if((fp=fopen(argv[1],"r"))==NULL) { perror("fopen"); exit(EXIT_FAILURE); } if(fseek(fp,0,SEEK_END)!=0) {

delphi 获取文件的最新修改时间 http://www.delphitop.com/html/wenjian/64.html

delphi 获取文件的最新修改时间 作者:admin 来源:未知 日期:2010/1/28 13:15:22 人气:1054 标签: QQ空间新浪微博腾讯微博腾讯朋友QQ收藏百度空间百度贴吧更多0 delphi 获取文件的最新修改时间 varDateTime: TDateTime;beginFileAge('C:\Windows\Notepad.exe', DateTime);ShowMessage(DateTimeToStr(DateTime));end;

linux下C获取文件的大小

获取文件大小这里有两种方法: 方法一. 范例: unsigned long get_file_size(const char *path) { unsigned long filesize = -1; FILE *fp; fp = fopen(path, "r"); if(fp == NULL) return filesize; fseek(fp, 0L, SEEK_END); filesize = ftell(fp); fclose(fp); return filesize; } 此

seek和tell的用法--获取文件内容大小(字节)

/*获取文件中存取的数据内容的大小(字节数) ellg() 和 tellp() 这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp). seekg() 和seekp() 这对函数分别用来改变流指针get 和put的位置.两个函数都被重载为两种不同的原型: seekg ( pos_type position ); seekp ( pos_type posit

用C#实现获取文件夹大小的源代码

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FileList { public class Program { public static void Main(string[] args) { Console.WriteLine(); long length

Linux C++获取文件夹大小

项目中要计算指定文件夹的大小.百度查到这篇文章,https://my.oschina.net/Tsybius2014/blog/330628方法可行,运行正确. 拿到我们的项目中,却遇到一些问题:程序中一些读文件的代码,开始报异常,都不到文件.这些都是以前没有遇到过的问题.到底是什么情况呢?排查了好久,终于发现使用该文章提供的计算文件夹大小的函数(暂且叫做GetDirectorySize),其中有改变当前目录的代码: chdir(dir); 我们的项目是多线程的,一个线程调用GetDirecto

delphi获取文件的创建/修改时间、按时间删除指定文件下的文件

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,DateUtils; ... //获取文件的创建时间 function GetFileCreationTime(const FileName: String): TDateTime; var FileTime: TFileTime; LocalFileTime: TFileTime; hFile: TH

Powershell获取文件夹大小和排序【层级关系】【大小】【名称】

#***************************************************************************************** #使用示例: #示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort Layer -Class 3 -Size 0.5 #获取"D:\Exchange Server"目录下的3层以内的大于0.5GB的子文件夹,并按照子文件

delphi获取文件路径

ExpandFileName(Application.ExeName);//返回文件的全路径(含驱动器.路径) D:\delphi程序\20170427\Win32\Debug\MyTestProject.exeExtractFileExt(Application.ExeName); //从文件名中抽取扩展名 .exeExtractFileName(Application.ExeName); //从文件名中抽取不含路径的文件名 MyTestProject.exeExtractFilePath(A