Delphi文件操作所涉及的一些函数 附例子

2023-05-16

//判断文件是否存在 FileExists
//判断文件夹是否存在 DirectoryExists
//删除文件 DeleteFile; Windows.DeleteFile
//删除文件夹 RemoveDir; RemoveDirectory
//获取当前文件夹 GetCurrentDir
//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory
//获取指定驱动器的当前路径名 GetDir
//文件改名 RenameFile
//建立文件夹 CreateDir; CreateDirectory; ForceDirectories
//删除空文件夹 RemoveDir; RemoveDirectory
//建立新文件 FileCreate
//获取当前文件的版本号 GetFileVersion
//获取磁盘空间 DiskSize; DiskFree
//搜索文件 FindFirst; FindNext; FindClose
//读取与设置文件属性 FileGetAttr; FileSetAttr
//获取文件的创建时间 FileAge; FileDateToDateTime

 

ExpandedBlockStart.gif 代码
// 判断文件是否存在 FileExists   
var   
  f: 
string ;   
begin   
  f :
=   ' c:\temp\test.txt ' ;   
  
if   not  FileExists(f)  then   
  
begin   
   
// 如果文件不存在   
  
end ;   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 判断文件夹是否存在 DirectoryExists   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  
if   not  DirectoryExists(dir)  then   
  
begin   
   
// 如果文件夹不存在   
  
end ;   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除文件 DeleteFile; Windows.DeleteFile   
var   
  f: 
string ;   
begin   
  f :
=   ' c:\temp\test.txt ' ;   
// DeleteFile(f);   // 返回 Boolean   
  
// 或者用系统API:   
  Windows.DeleteFile(PChar(f)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除文件夹 RemoveDir; RemoveDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  RemoveDir(dir); 
// 返回 Boolean   
  
// 或者用系统 API:   
  RemoveDirectory(PChar(dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取当前文件夹 GetCurrentDir   
var   
  dir: 
string ;   
begin   
  dir :
=  GetCurrentDir;   
  ShowMessage(dir); 
// C:\Projects   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp ' ;   
  
if  SetCurrentDir(dir)  then   
    ShowMessage(GetCurrentDir); 
// c:\temp   
  
// 或者   
  ChDir(dir); 
// 无返回值   
  
// 也可以使用API:   
  SetCurrentDirectory(PChar(Dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取指定驱动器的当前路径名 GetDir   
var   
  dir: 
string ;   
  b: Byte;   
begin   
  b :
=   0 ;   
  GetDir(b,dir);   
  ShowMessage(dir); 
//    
  
// 第一个参数:  1 2 3 4 ...分别对应: A、B、C、D...   
// 0  是缺省驱动器   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 文件改名 RenameFile   
var   
  OldName,NewName: 
string ;   
begin   
  OldName :
=   ' c:\temp\Old.txt ' ;   
  NewName :
=   ' c:\temp\New.txt ' ;   
  
  
if  RenameFile(OldName,NewName)  then   
    ShowMessage(
' 改名成功! ' );   
  
// 也可以:   
  SetCurrentDir(
' c:\temp ' );   
  OldName :
=   ' Old.txt ' ;   
  NewName :
=   ' New.txt ' ;   
  
  
if  RenameFile(OldName,NewName)  then   
    ShowMessage(
' 改名成功! ' );   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 建立文件夹 CreateDir; CreateDirectory; ForceDirectories   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp\delphi ' ;   
  
if   not  DirectoryExists(dir)  then   
    CreateDir(dir); 
// 返回 Boolean   
  
// 也可以直接用API:   
  CreateDirectory(PChar(dir),
nil );  // 返回 Boolean   
  
// 如果缺少上层目录将自动补齐:   
  dir :
=   ' c:\temp\CodeGear\Delphi\2007\万一 ' ;   
  ForceDirectories(dir); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 删除空文件夹 RemoveDir; RemoveDirectory   
var   
  dir: 
string ;   
begin   
  dir :
=   ' c:\temp\delphi ' ;   
  RemoveDir(dir); 
// 返回 Boolean   
  
// 也可以直接用API:   
  RemoveDirectory(PChar(dir)); 
// 返回 Boolean   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 建立新文件 FileCreate   
var   
  FileName: 
string ;   
  i: Integer;   
begin   
  FileName :
=   ' c:\temp\test.dat ' ;   
  i :
=  FileCreate(FileName);   
  
  
if  i > 0   then   
    ShowMessage(
' 新文件的句柄是:  '   +  IntToStr(i))   
  
else   
    ShowMessage(
' 创建失败! ' );   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取当前文件的版本号 GetFileVersion   
var   
  s: 
string ;   
  i: Integer;   
begin   
  s :
=   ' C:\WINDOWS\notepad.exe ' ;   
  i :
=  GetFileVersion(s);  // 如果没有版本号返回  - 1    
  ShowMessage(IntToStr(i)); 
// 327681  这是当前记事本的版本号(还应该再转换一下)   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取磁盘空间 DiskSize; DiskFree   
var   
  r: Real;   
  s: 
string ;   
begin   
  r :
=  DiskSize( 3 );  // 获取C:总空间, 单位是字节   
  r :
=  r / 1024 / 1024 / 1024 ;   
  Str(r:
0 : 2 ,s);  // 格式为保留两位小数的字符串   
  s :
=   ' C盘总空间是:  '   +  s  +   '  GB ' ;   
  ShowMessage(s); 
// xx.xx GB   
  
  r :
=  DiskFree( 3 );  // 获取C:可用空间   
  r :
=  r / 1024 / 1024 / 1024 ;   
  Str(r:
0 : 2 ,s);   
  s :
=   ' C盘可用空间是:  '   +  s  +   '  GB ' ;   
  ShowMessage(s); 
// xx.xx GB   
end ;   
  
// 查找一个文件 FileSearch   
var   
  FileName,Dir,s: 
string ;   
begin   
  FileName :
=   ' notepad.exe ' ;   
  Dir :
=   ' c:\windows ' ;   
  s :
=  FileSearch(FileName,Dir);   
  
  
if  s <> ''   then   
    ShowMessage(s) 
// c:\windows\notepad.exe   
  
else   
    ShowMessage(
' 没找到 ' );   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 搜索文件 FindFirst; FindNext; FindClose   
var   
  sr: TSearchRec;    
// 定义 TSearchRec 结构变量   
  Attr: Integer;     
// 文件属性   
  s: 
string ;          // 要搜索的内容   
  List: TStringList; 
// 存放搜索结果   
begin   
  s :
=   ' c:\windows\*.txt ' ;   
  Attr :
=  faAnyFile;              // 文件属性值faAnyFile表示是所有文件   
  List :
=  TStringList.Create;     // List建立   
  
  
if  FindFirst(s,Attr,sr) = 0   then   // 开始搜索,并给 sr 赋予信息, 返回0表示找到第一个   
  
begin   
    
repeat                         // 如果有第一个就继续找   
      List.Add(sr.Name);         
// 用List记下结果   
    
until (FindNext(sr) <> 0 );       // 因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到   
  
end ;   
  FindClose(sr);                 
// 需要结束搜索, 搜索是内含句柄的   
  
  ShowMessage(List.Text);        
// 显示搜索结果   
  List.Free;                     
// 释放List   
  
// 更多注释:   
// TSearchRec 结构是内涵文件大小、名称、属性与时间等信息   
// TSearchRec 中的属性是一个整数值, 可能的值有:   
// faReadOnly   1    只读文件   
// faHidden     2    隐藏文件   
// faSysFile    4    系统文件   
// faVolumeID   8    卷标文件   
// faDirectory  16   目录文件   
// faArchive    32   归档文件   
// faSymLink    64   链接文件   
// faAnyFile    63   任意文件   
  
// s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是 * , 譬如: C:\ *    
// 实际使用中还应该在  repeat  中提些条件, 譬如判断如果是文件夹就递归搜索等等   
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 读取与设置文件属性 FileGetAttr; FileSetAttr   
var   
  FileName: 
string ;   
  Attr: Integer; 
// 属性值是一个整数   
begin   
  FileName :
=   ' c:\temp\Test.txt ' ;   
  Attr :
=  FileGetAttr(FileName);   
  ShowMessage(IntToStr(Attr)); 
// 32 , 存档文件   
  
// 设置为隐藏和只读文件:   
  Attr :
=  FILE_ATTRIBUTE_READONLY  or  FILE_ATTRIBUTE_HIDDEN;   
  
if  FileSetAttr(FileName,Attr) = 0   then   // 返回0表示成功   
    ShowMessage(
' 设置成功! ' );   
  
// 属性可选值(有些用不着):   
// FILE_ATTRIBUTE_READONLY  =   1 ; 只读   
// FILE_ATTRIBUTE_HIDDEN  =   2 ; 隐藏   
// FILE_ATTRIBUTE_SYSTEM  =   4 ; 系统   
// FILE_ATTRIBUTE_DIRECTORY  =   16    
// FILE_ATTRIBUTE_ARCHIVE  =   32 ; 存档   
// FILE_ATTRIBUTE_DEVICE  =   64    
// FILE_ATTRIBUTE_NORMAL  =   128 ; 一般   
// FILE_ATTRIBUTE_TEMPORARY  =   256    
// FILE_ATTRIBUTE_SPARSE_FILE  =   512    
// FILE_ATTRIBUTE_REPARSE_POINT  =   1204    
// FILE_ATTRIBUTE_COMPRESSED  =   2048 ; 压缩   
// FILE_ATTRIBUTE_OFFLINE  =   4096    
// FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  =   8192 ; 不被索引   
// FILE_ATTRIBUTE_ENCRYPTED  =   16384    
end ;   
  
--------------------------------------------------------------------------------    
  
  
// 获取文件的创建时间 FileAge; FileDateToDateTime   
var   
  FileName: 
string ;   
  ti: Integer;   
  dt: TDateTime;   
begin   
  FileName :
=   ' c:\temp\Test.txt ' ;   
  ti :
=  FileAge(FileName);   
  ShowMessage(IntToStr(ti)); 
// 返回:  931951472 , 需要转换   
  
  dt :
=  FileDateToDateTime(ti);  // 转换   
  ShowMessage(DateTimeToStr(dt)); 
// 2007 - 12 - 12   14 : 27 : 32    
end ;  

 

 

转载于:https://www.cnblogs.com/rogee/archive/2010/09/20/1832012.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi文件操作所涉及的一些函数 附例子 的相关文章

  • 有“进度按钮”吗?

    我想要一个具有双重功能的按钮作为进度条 例如 随着任务的进展 按钮会填充绿色背景 我知道我可以创建自己的 但如果有现成的东西 我很乐意使用它 有谁知道适合该要求的免费或商业组件吗 我希望它能在 Delphi 2007 中工作 但如果它仅在
  • PopupMenuItem Click 和 MouseOver 的区别

    当菜单项有一个子菜单时 鼠标悬停在展开子菜单时会触发单击事件 这个点击事件和用户实际点击有什么区别吗 我使用 TPopupMenu 作为 cxButton 的下拉属性 EDIT德尔福2007 不确定这是否适用于 D2007 在 D7 中也是
  • 如何通过 TIdHTTP 下载大文件?

    我使用此代码下载小文件 Var ms TMemoryStream begin ms TMemoryStream Create Idhttp1 get http mydomain com myfile zip ms ms SaveToFile
  • 哪些简单的改变对您的 Delphi 程序产生了最大的改进 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 Delphi 2009 程序 需要处理大量数据 并且需要尽可能快且不使用太多内存 What 小简单您是否对 Delphi 代
  • 从连接到计算机并在成像设备中列出的相机捕获图像

    我有一台佳能 EOS 1000D 当我将其连接到计算机时 它列在 控制面板 gt 成像设备 下 我想以编程方式拍照 我猜想成像设备中列出的所有设备都具有相同的接口 可能是 TWAIN 并且具有向它们发送命令的标准方法 TWAIN可以做到吗
  • 如何使用Delphi 2010优化上传例程?

    My 尚未发布Delphi 2010 应用程序允许用户将他们的文件上传到我的服务器 现在我使用 HTTPS POST 发送文件 简化的 算法基本上是 将文件拆分为 片 每个片 256KB 对于每个切片 将其 POST 到服务器 IE 对于
  • Delphi - MySQL 最好使用的数据感知组件

    我需要我的应用程序连接到我的 Web 服务器的 MySQL 数据库 最好的选择是什么 首选数据感知组件 我尝试了 zeos 7 但不断收到错误 SQL 错误 客户端不支持服务器请求的身份验证协议 考虑升级MySQL客户端 但未能修复 Tha
  • Delphi XE 和使用 OnKeyDown 捕获箭头键

    我希望我的表单能够处理箭头键 而且我可以做到 只要表单上没有按钮 为什么是这样 关键消息由接收这些消息的控件本身进行处理 这就是为什么当您使用按钮时表单不会接收消息 因此 通常您必须对这些控件进行子类化 但 VCL 足够友好地询问父子表单如
  • 在 Delphi 中实现 MVVM 绑定(View <-> ViewModel)的最佳方法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于使用本机组件的多平台应用程序 标准的 Delphi 方法已不再足够 到目前为止 我们的结构只有几个部分 GUI 表单 和业务逻辑 现在我们需
  • 更改控制台大小

    Delphi中的简单问题 我创建了一个控制台应用程序 如果控制台窗口的高度少于 80 行 我需要将其高度更改为 80 行 这需要从代码中完成 并且实际上是在代码内有条件的 即 当发生错误时 它会增加控制台的大小 以便整个 巨大的 错误报告可
  • 如何创建 Delphi Android 应用程序 APK 来包含文件

    如何将文件和 或包含 Android 应用程序 APK 文件的文件的文件夹包含在内 Delphi 运行过程会擦除 Assets 目录的内容 并且我放置在那里的文件 文件夹不包含在 APK 包中 我假设您必须手动将 System Startu
  • Delphi:MDI应用程序中的最大化子窗体

    如何最大化仅适合客户区而不适合整个父窗口的子窗口 我不希望子窗口在父窗口的主菜单或其他控件下消失 我有这个代码 procedure WMSIZE var Msg TMessage message WM SIZE procedure TFor
  • Delphi COM 对象中的早期绑定和后期绑定在性能方面哪个更好

    在delphi中 如果要创建COM对象 可以通过两种方式来完成 第一个是早期绑定 例如 uses MSScriptControl TLB MS Script Control var obj IScriptControl begin obj
  • Delphi预定义环境变量

    谁能告诉我在哪里可以找到 RAD Studio 中可用的 伪 环境变量列表 例如 Platform Config 等 具体来说 我想要一个能够为我提供 RTL 版本的版本 以便我可以将编译单元 dcu 放入正确的目录中 即 XE为D15 X
  • Delphi是否存在无锁队列“多个生产者-单个消费者”?

    我发现了几个针对单个生产者 单个消费者的实现 但没有找到多个生产者 单个消费者的实现 Delphi是否存在 多个生产者 单个消费者 的无锁队列 无锁队列全线程库 http otl 17slon com支持多个生产者 您可以将它与线程库分开使
  • Windows EventLog:它的操作速度有多快?

    我有一个服务应用程序 它通过 TCP 处理客户端请求并将任何事件写入 Windows EventLog 由于该应用程序预计会在短时间内为许多客户端和每个客户端的大量请求提供服务 假设每秒 1 到 50 个请求 因此我很想知道密集程度 CPU
  • NvCplGetThermalSettings 返回 false

    问题 您好 我正在尝试使用 Delphi 获取 nividia gtx 980 的 GPU 温度 我看过C 问题 他的解决方案是不使用nvcpl dll 我认为这不是正确的解决方案 因为 nivida 有完整的文档说明如何处理 API 见下
  • 构建多线程 TCP/IP 服务器

    我想构建一个可供最多 100 个并发客户端使用的 TCP IP 服务器 但仍不确定如何开始 至少我需要服务器 监听客户端 并将它们全部存储在数组或列表中 对于每个客户端 它需要根据其客户端状态接收和发送数据 当有人连接或断开连接时 服务器应
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • 在 Pascal 中将文本文件中的字符串读入数组

    使用这个程序 我试图读取一个文件并将其随机打印到控制台 我想知道是否必须使用数组 例如 我可以将字符串分配到一个数组中 然后从数组中随机打印 但是 我不确定如何解决这个问题 另一个问题是 我当前的程序没有从我的文件中读取第一行 我有一个文本

随机推荐

  • 总结 IOS 7 内存管理

    iOS7的一些总结 5 iOS中的内存管理 我们知道 xff0c 为了更加方便地处理内存管理问题 xff0c 将开发人员从繁琐的内存的分配和释放工作中解放出来而专注于产品和逻辑 xff0c iOS提供了一种有效的方法 xff0c 即自动引用
  • 《STL源码剖析》---list容器insert操作的个人理解

    最近在看STL源码剖析 xff0c 感觉还是挺深奥的 xff0c 感觉看不太懂 今天在看list容器这块 xff0c 讲到了insert操作 xff0c 便记录一番自己的理解吧 摘抄书上的 xff1a iterator insert ite
  • PROCESS_YIELD()宏和C语言的switch语句< contiki学习笔记之七>

    写在前面 xff1a 按照main 函数的代码一行一行的分析 xff0c 该是看到了 etimer process 这个位置 但是etimer process实现里的一个宏 PROCESS YIELD 引出了很多故事 xff0c 于是单独把
  • 用c语言指针实现vector,C使用指针将对象添加到Vector中

    我有一个向量添加包含 SDL Surface 指针作为数据成员的对象 xff0c 这意味着我必须使用复制构造函数来实现指针的深层复制 该对象释放析构函数中的表面 指针 xff0c 这就是问题发生的地方 当对象被添加到向量中时 通过按下按钮
  • 【Http认证方式】——Basic认证

    访问请求 xff1a http 192 168 2 113 8080 geoserver rest workspaces时 xff0c 浏览器弹出窗口需要输入用户名和密码 xff0c 并且 xff0c 如果不输入或者输入错误 xff0c 浏
  • c++ http请求

    平常我们要访问某个URL一般都是通过浏览器进行 xff1a 提交一个URL请求后 xff0c 浏览器将请求发向目标服务器或者代理服务器 xff0c 目标服务器或者代理服务器返回我们所需要的数据 xff0c 浏览器接收到这些数据后保存成文件并
  • libcurl实现http登录功能

    用Fiddler Web Debugger捕捉http数据包 xff1a 观察看看 xff0c POST请求的地址为http passport cnblogs com login aspx ReturnUrl 61 http 3a 2f 2
  • 服务器机柜和网络机柜的区别

    原文转载自 http www fwqtg net 服务器机柜 xff0c 用来组合安装面板 插件 插箱 电子元件 器件和机械零件与部件 xff0c 使其构成一个整体的安装箱 服务器机柜由框架和盖板 xff08 门 xff09 组成 xff0
  • Eclipse+Maven创建webapp项目<一>

    Eclipse 43 Maven创建webapp项目 lt 一 gt 1 开启eclipse xff0c 右键new other xff0c 如下图找到maven project 2 选择maven project xff0c 显示创建ma
  • java日期格式(年月日时分秒毫秒)

    package test remote tools combine import java text SimpleDateFormat import java util Calendar import java util Date impo
  • 游戏中的帧同步要求的计算一致性——定点数(Fixed Point)

    最近做了一款帧同步游戏 xff0c 其寻路算法采用了RVO算法 但是由于是移动端的游戏 需要在不同的设备上运行 xff0c 其所有运算必须符合一致性 即所有客户端运算出来的结果必须一致 但是由于浮点数的特性 xff0c 具有误差 xff0c
  • 敏捷测试驱动模式-项目质量保障体系

    结合敏捷项目管理 xff0c 测试驱动模式 xff0c 让测试跑起来 我给这套体系的定义就是 保障质量的同时保证项目进度 xff0c 四个节点及时反馈及时沟通 xff0c 有效的让产品 研发和测试都动起来 xff0c 避免任意一方的停滞 质
  • angularjs自定义指令函数传参

    问题描述 在编写导入指令的时候 xff0c 需要将函数绑定到指令中 xff0c 并传入一个参数 初步实现 首先指令的js文件如下 xff0c 基本的绑定参数和绑定函数 xff0c 没有什么说的 xff1a angular module 39
  • 浅谈JSONObject解析JSON数据

    个人博客同步文章 https mr houzi com 2018 06 根据一段天气API来说一下JSONObject如何解析json数据 xff0c 尽管现在在开发中使用Gson等 xff0c 对于像我这样初次使用Java做开发的小白 x
  • 能ping通,但是不能wget或curl

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 当出现http接口请求超时时 xff0c 可以从以下几个方面排查问题 xff1a 检查接口服务本身是否正常 xff1b 检查接口所在服务器的防火墙是否开启 xff0c 尝试
  • R语言选择特定的行,对某一列排序

    R语言的数据框跟MySQL 中的表很像 根据某一列的特定值选择相应的行 d是个数据框 xff0c 有一列的名字是name d d name 61 61 34 95 34 这样就选中了 name为 95 的所有行 m 是个数据框 xff0c
  • excel表格公式无效、不生效的解决方案及常见问题、常用函数

    1 表格公式无效 不生效 使用公式时碰到了一个问题 xff0c 那就是公式明明已经编辑好了 xff0c 但是在单元格里不生效 xff0c 直接把公式显示出来了 xff0c 网上资料说有4种原因 xff0c 但是我4种都不是 xff0c 是第
  • JVM_栈详解一

    1 Java虚拟机栈 2 栈的存储单位 栈中存储什么 xff1f 每个线程都有自己的栈 xff0c 栈中的数据都是以栈帧 xff08 Stack Frame xff09 的格式存在 在这个线程上正在执行的每个方法都各自对应一个栈帧 xff0
  • EntLib 3.1学习笔记(6) : Security Application Block

    http www microsoft com china MSDN library enterprisedevelopment softwaredev dnpag2entlib mspx mfr 61 true http msdn2 mic
  • Delphi文件操作所涉及的一些函数 附例子

    判断文件是否存在 FileExists 判断文件夹是否存在 DirectoryExists 删除文件 DeleteFile Windows DeleteFile 删除文件夹 RemoveDir RemoveDirectory 获取当前文件夹