先介绍ExtractFilePath和ParamStr        

ParamStr

  该函数的原型是:function paramstr(i: Integer): String;

  对于任何的application,paramstr(0)都默认代表的是应用程序的绝对路径。假如你这个编译号的exe 文件在 d:\delphi下,名字叫做 project1.exe。那么 在该应用程序中paramstr(0)返回:d:\delphi\project1.exe。这个值是变的,exe程序在哪,这个值就变为哪儿。

  那么有paramstr(0),就肯定有paramstr(1),paramstr(2)…了。它们的值又是什么了?我试了下取出的是空值,又不能赋值。

  delphi帮助中说Returns a specified parameter from the command-line.从命令行中返回一个特别的参数。折腾了半天才搞清楚,就是在exe文件后面可以跟参数,paramstr 获取的就是exe文件后面跟参数。

  如有可执行文件project1.exe 在运行(cmd命令行)中输入 e:\project1.exe 123 456 789。 那么paramstr(1)=’123′ paramstr(2)=’456′ paramstr(3)=’789′

  用shellexecute的话可以在parameters参数位置输入值。不同的参数值之间用空格隔开。如

shellexecute(application.Handle,’open’,’project4.exe’,’123 456′, ‘e:\’,SW_SHOW);

  所以用paramstr可以在应用程序间进行数据传输。

ExtractFilePath

  功能:返回完整文件名中的路径。 具体使用的方法参见例子:

Extractfilepath(‘d:\delphi\project1.exe’) ;
// 就等于 ‘d:\delphi\’ ,它就是把最后的文件名去掉,只要路径,且路径最后有 \

  函数原型如下:  function ExtractFilePath(const FileName: string): string;

  ExtractFilePath和相近函数:

ExtractFileDrive :返回完整文件名中的驱动器,如”C:”

ExtractFilePath:返回完整文件名中的路径,最后带“/”,如”C:\test\”

ExtractFileDir:返回完整文件名中的路径,最后不带“/” ,如”C:\test”

ExtractFileName:返回完整文件名中的文件名称 (带扩展名),如”mytest.doc”

ExtractFileExt: 返回完整文件名中的文件扩展名(带.),如”.doc”

  上面这么多,就是取得当前可执行文件的当前路径,这里就有一个应用的示例:

myini := TIniFile.Create(ExtractFilePath(ParamStr(0))+’Config.ini’);

  config.ini 和你的可执行文件是在同一级目录下的,,这样就找到config.ini文件了.

再介绍更多常用的文件操作函数            

  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:获取文件的创建时间

以上函数的代码示例                 

FileExists:判断文件是否存在

var
f: String;
begin
f:= 'c:/temp/test.txt';
if not FileExist(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,也返回Boolean
Windows.DeleteFile(PChar(f)); //注意这里需要对String类型进行类型转换,转换为PChar,我的理解是Windows的API需要兼容C和Delphi,所以使用Char数组类型的字符串正好可以同时满足两种语言的结构 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; // C:/Projects   
ShowMessage(dir);
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:文件改名

//文件改名 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');
//所以可以看出来,SetCurrentDir是切换目录路径(上面所说的设置路径就是指切换目录路径)
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);
//FileCreate返回的是创建的文件的句柄,大于0成功,否则失败 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:(序号是3)的总空间,单位是字节
r:= r/1024/1024/1204;
Str(r:0:2, s); //格式为保留两位小数的字符串
s:='C盘的总空间是:' + s + ' GB';
ShowMessage(s); //xx.xx GB r:= DiskFree(s); //获取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;

  

Delphi中ExtractFilePath、ParamStr以及更多文件/目录操作涉及的函数。附加对应的例子的更多相关文章

  1. Delphi 中内存映射对于大文件的使用

    这篇文章主要介绍了Delphi 中内存映射对于大文件的使用的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下 Delphi 中内存映射对于大文件的使用 平时很少使用大文件的内存映射,碰巧遇到了 ...

  2. 在Delphi中使用ShellExecute(handle, 'open', PChar(fname),nil, nil, SW_HIDE)函数应注意的问题

    在Delphi中使用ShellExecute(handle, 'open', PChar(fname),nil, nil, SW_HIDE)函数应注意的问题: 一.对一般vcl程序及isapi dll ...

  3. Linux 文件/目录操作详解

    目录 Linux 文件/目录操作详解 初识Linux 一.文件/目录显示命令 ls 二.目录创建命令 mkdir 三.目录转移命令 cd 四.当前目录显示命令 pwd 五.文件处理命令 rmdir 六 ...

  4. Linux中ftp不能上传文件/目录的解决办法

    在linux中不能上传文件或文件夹最多的问题就是权限问题,但有时也不一定是权限问题了,像我就是空间不够用了,下面我来总结一些ftp不能上传文件/目录的解决办法   在排除用户组和权限等问题后,最可能引 ...

  5. Java 7 中 NIO.2 的使用——文件递归操作

    众所周知,递归编程是一项有争议的技术,因为它需要大量的内存,但是它能简化一些编程任务.基本上,一个递归操作都是程序调用自己传递参数修改的值或者参数传递到当前的程序循环中.递归编程通常用来计算阶乘斐波那 ...

  6. Python技法:实用运维脚本编写(进程/文件/目录操作)

    Python在很大程度上可以对shell脚本进行替代.笔者一般单行命令用shell,复杂点的多行操作就直接用Python了.这篇文章就归纳一下Python的一些实用脚本操作. 1. 执行外部程序或命令 ...

  7. Python - os 文件/目录操作

    最近经常用到 os 操作文件/目录,感觉挺好使的,但是一直没有系统的梳理学习一下, 今天想借此机会整理一下工作中常用的方法,也算自己总结学习的一个积累吧. 直接上代码,注释明了 #-*-coding: ...

  8. 《UNIX-Shell编程24学时教程》读书笔记Chap3,4 文件,目录操作

    Chap3 文件操作   P28 在这章中,要着重记住一些常用的选项,要有使用正则表达式的思维,能更快达到目的.----@im天行 3.1 列文件名 .profile  sh的初始化脚本: .kshr ...

  9. Linux 指令(一)文件/目录操作

    1. 创建目录 mkdir 格式 mkdir [OPTION]... DIRECTORY... 选项 -p 递归创建 -v 创建时提示 例: root@ubuntu:/home/eko/x# mkdi ...

随机推荐

  1. Jenkins安装

    直接下载使用Jenkins有两种方式:一种是下载war包安装.另一种是下载.zip进行安装. 一..zip解压安装 1.下载Jenkins:地址http://mirrors.jenkins-ci.or ...

  2. UML大战需求分析--阅读笔记02

    这次阅读了第三章--类图.本章主要讲解了类图的基本使用规则和一些使用的例子.类图是UML中非常重要的一部分,作用很大. 类图之间有五种关系:关联关系,聚合关系,组合关系,泛化关系,依赖关系.关联关系有 ...

  3. ubuntu右上角时间不显示

    重启unity sudo killall unity-panel-service

  4. 分析oracle的执行计划(explain plan)并对对sql进行优化实践

    基于oracle的应用系统很多性能问题,是由应用系统sql性能低劣引起的,所以,sql的性能优化很重要,分析与优化sql的性能我们一般通过查看该sql的执行计划,本文就如何看懂执行计划,以及如何通过分 ...

  5. Xshell5 里桌面显示数据调大!!!

    今天告诉大家一个好用的技巧, 在Xshell5下工作,屏幕上很容易积攒数据量,尤其是编译的时候,(当然你编译的时候可以重定向到一个文件中,也可以只重定向编译错误的信息): 这个时候,你想观看之前的编译 ...

  6. 在Swift中实现单例方法

    在写Swift的单例方法之前可以温习一下Objective-C中单例的写法: + (instancetype)sharedSingleton{ static id instance; static d ...

  7. PopupWindow 使用

    昨天马失前蹄,为了做一个小键盘,耽误了两个小时,记录一下心路历程 1.关于需求与选择 需求: 点击一个按钮,弹出一个小键盘(类似于输入法键盘) 选择: (1)方案一:KeyboardView 这是百度 ...

  8. [转]SpringMVC Controller介绍及常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  9. IP变化,SVN和数据库的修改

    最近公司换了运营商,将启用新的IP地址,将以前项目的端口映射处理好之外,还需要切换SVN的地址. 项目开发中有可能要修改SVN的IP地址,entries文件里面包含svn服务器的地址信息.每个文件夹都 ...

  10. 整理:Javascript获取数组中的最大值和最小值的方法汇总

    方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //最小值 Array.prototype.min = function ...