09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx

上传人:b****5 文档编号:7931975 上传时间:2023-01-27 格式:DOCX 页数:20 大小:33.11KB
下载 相关 举报
09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx_第1页
第1页 / 共20页
09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx_第2页
第2页 / 共20页
09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx_第3页
第3页 / 共20页
09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx_第4页
第4页 / 共20页
09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx

《09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx》由会员分享,可在线阅读,更多相关《09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx(20页珍藏版)》请在冰豆网上搜索。

09 InstallShield内部库函数全集九文件和文件夹函数中文版.docx

09InstallShield内部库函数全集九文件和文件夹函数中文版

InstallShield内部库函数全集九-文件和文件夹函数(中文版)

9 文件和文件夹函数

   文件和文件夹函数提供一个全面的方法来处理文本文件,二进制文件和文件夹。

许多函数使用变量TARGETDIR和SRCDIR作为路径并只接受文件名作为参数。

适当时也接受通配符。

ChangeDirectory

使指定的目录为当前目录。

CloseFile

关闭一个打开的文件。

CopyFile

将一个文件从一个文件夹拷贝到另一个。

CreateDir

创建一个新文件夹。

CreateFile

创建一个指定文件名的文件。

DeleteDir

删除一个文件夹。

DeleteFile

删除一个文件。

ExistsDir

确定指定目录是否存在。

ExistsDisk

确定指定磁盘是否存在。

FileCompare

将一个文件和另一个比较。

FileDeleteLine

删除一个文本文件中的一行。

FileGrep

在一个文本文件中查找指定文本。

FileInsertLine

在一个文本文件中插入一行。

FindAllDirs

查找指定文件夹下的所有子文件夹。

FindAllFiles

查找指定文件夹中的所有和一个文件说明匹配的文件和它的子文件夹。

FindFile

查找在指定文件夹中和一个文件说明匹配的第一个文件。

GetFileInfo

检索一个文件的属性,日期,时间和大小。

GetLine

从一个打开的文件中检索一行文本。

OpenFile

打开一现存文件。

OpenFileMode

用OpenFile函数设置文件打开的方式。

ReadBytes

从一个二进制文件中读取指定的字节数。

RenameFile

更名一个文件。

SeekBytes

在一个二进制文件中定位文件指针。

SetFileInfo

设置一个文件的属性,日期和时间。

WriteBytes

在一个二进制文件的当前文件指针位置写入指定数目的字节。

WriteLine

将一个字符串写入一个文本文件。

XCopyFile

将一个或多个文件从一个源文件夹拷贝到一个目标文件夹,如果指定则包括子文件夹。

相关函数

SelectDir

请参阅4.10。

9.1 ChangeDirectory

语法:

ChangeDirectory(szPath);

说明:

ChangeDirectory函数设置当前目录。

参数:

szPath

指定要被设置为当前目录的目录名。

该名可以是一个全限定路径名或一个UNC路径;它必须不包括一个尾随反斜杠。

如有必要,在调用ChangeDirectory前调用StrRemoveLastSlash。

返回值:

0:

ChangeDirectory成功设置指定目录为当前目录。

<0:

ChangeDirectory未能设置指定目录为当前目录。

注解:

·注意在你调用ChangeDirectory将一个指定目录设为当前目录后,该目录不能被删除。

在你可以删除该目录前,你必须再次调用ChangeDirectory来设置一个不同的当前目录。

9.2 CloseFile

语法:

CloseFile(nvFileHandle);

说明:

CloseFile函数关闭一个已经由调用OpenFile打开的文件。

在你关闭一个文件后,你不能从中读或写到该文件。

参数:

nvFileHandle

指定要关闭的文件的句柄。

返回值:

0:

表明该函数成功关闭该文件。

<0:

表明该函数未能关闭该文件。

9.3 CopyFile

语法:

CopyFile(szSrcFile,szTargetFile);

说明:

CopyFile函数创建一个由参数szSrcFile指定的文件的拷贝。

新文件由参数szTargetFile指定文件名。

参数:

szSrcFile

指定要拷贝的文件的文件名。

如果该文件名是限定的,也就是,如果它包括一个路径,CopyFile将从指定位置拷贝该文件。

如果szSrcFile包含一个未限定文件名,也就是,没有路径信息,CopyFile将从由系统变量SRCDIR标识的路径拷贝。

为拷贝一组文件,在该参数位置使用通配符。

szTargetFile

指定给由szSrcFile标识的文件的拷贝的名称。

如果文件名是限定的,也就是,如果它包含一个路径,CopyFile将把文件拷贝到路径指定的位置。

如果szSrcFile包含一个未限定文件名,也就是,没有路径信息,拷贝将被创建在由系统变量TARGETDIR指定的目录中。

如果目标目录不存在,它将被创建。

   当由szSrcFile指定的文件名中包含一个通配符时,szTargetFile的文件名部分被忽略;每个源文件以它的现存名被拷贝到由szTargetFile指定的路径。

如果szTargetFile包含一个未限定文件名,文件将被拷贝到由系统变量TARGETDIR指定的目录中。

因此,CopyFile不能被用来拷贝和重命名一组文件。

当szSrcFile包含一个或多个通配符时,源目录和目标目录必须不同。

返回值:

0:

表明函数成功地从源目录拷贝文件至目标目录。

<0:

表明函数因下列情况之一未能拷贝所要文件:

COPY_ERR_CREATEDIR(-27):

目标目录不能被创建。

确保系统变量TARGETDIR中的路径语法正确并且你有权访问目标驱动器。

COPY_ERR_MEMORY(-6):

函数未能分配完成拷贝文件进程所需的内存。

尽可能多地终止正在运行的应用程序以释放内存。

COPY_ERR_NODISKSPACE(-38):

函数未能在目标驱动器上找到足够的磁盘空间来拷贝文件。

在目标驱动器上释放磁盘空间。

COPY_ERR_OPENINPUT(-2):

函数未能打开系统变量SRCDIR指定的输入文件。

确保源文件有一个有效的文件名并且源文件和目标目录都存在。

COPY_ERR_OPENOUTPUT(-3):

函数未能拷贝所要文件。

COPY_ERR_TARGETREADONLY(-46):

TARGETDIR中的文件是只读文件。

删除目标文件的只读属性并重试。

所有其它负值:

表明发生一些其它不确定错误。

注解:

·如果你使用未限定文件名并在使用CopyFile时设置SRCDIR和TARGETDIR的值,在调用CopyFile前用VarSave保存当前值并然后用VarRestore重新设置。

如果目标目录不存在,CopyFile创建它。

·你不能通过调用CopyFile时使用通配符来重命名一组文件。

然而,单独一个文件时你可以使用CopyFile来做到。

·为包括子目录,调用XcopyFile函数。

·对于文件传输,XCopyFile是CopyFile的一个完美替换。

XCopyFile可以做版本检测,标记锁定的.dll和.exe文件待系统重启后更新,并且递增共享的.dll和.exe文件的注册表访问计数器。

·因为Windows95及更高版本不允许一个空文件被拷贝,WindowsNT不允许创建空文件,CopyFile在这些平台下当被用来拷贝空文件(Size=0KB)时将不工作。

·在用WriteProfString或WriteProfInt修改.ini文件后,Windows95及更高版本下,你必须在使用CopyFile前刷新高速缓存。

所有.ini文件在Windows95及更高版本下被放在高速缓存中;这种特性可能导致延迟将修改写到指定文件。

这接着可能妨碍随后的文件操作。

为避免这个问题,简单地以空参数调用WriteProfString来强制Windows95及更高版本立即写数据到.ini文件,如下所示:

   WriteProfString("C:

\\Test.ini","Windows","KeyboardDelay","100");

   file:

//nullstring("")forallfourparameters

   WriteProfString("","","","");

   file:

//CopyFileshouldnowhaveaccesstoupdatedfile.

   CopyFile("C:

\\Test.ini","C:

\\Temp\\Test.ini");

9.4 CreateDir

语法:

CreateDir(szDirPath);

说明:

CreateDir函数在目标驱动器上创建一个或多个子目录。

你可以使用一个包含多层子目录的路径,如C:

\Programs\Winapps\Myapp。

任何路径中不存在的子目录,CreatDir将创建它。

例如,如果C:

\Programs\Winapps和C:

\Programs\Winapps\Myapp都不存在,这些子目录将都被CreatDir创建。

参数:

szDirPath

指定要创建的子目录的全限定路径。

将路径中的每层用一个反斜杠分隔(通过使用反斜杠转义符(\\))。

返回值:

0:

表明函数在目标驱动器上成功创建指定目录或指定目录已经存在。

<0:

表明指定目录不存在并且函数未能创建指定它。

注解:

下列情况下CreatDir将失败:

路径非法;

驱动器或路径上的任何子目录是写保护的;

驱动器名无效;

你没有网络特权来创建子目录。

9.5 CreateFile

语法:

CreateFile(nvFileHandle,szPath,szFileName);

说明:

CreateFile函数创建一个新文件。

如果相同名的文件已经存在,CreateFile改写它。

在你用CreateFile创建一个文件前,你必须用OpenFileMode设置文件方式。

   CreateFile将新创建的文件打开为读/写(二进制文件)或添加(文本文件)方式,因此你可以使用其它函数,如GetLine,ReadBytes,WriteLine和WriteBytes.来从文件中读或写到文件中。

   除了读/写或添加方式,所有新创建文件自动打开为OF_SHARE_DENY_NONE方式。

这意谓着文件被打开为不拒绝其它程序对它的读或写。

这种方式的根段记录在WindowsOpenFileAPI中。

当你结束从一个文件读或对它写时,你必须使用CloseFile函数来关闭该文件。

参数:

nvFileHandle

返回新文件的句柄。

szPath

指定新文件创建所在的子目录的全限定路径。

szFileName

指定创建的文件的文件名。

返回值:

0:

表明函数成功创建新文件。

<0:

表明函数未能创建新文件。

注解:

·CreateFile创建一个新文件并把它打开以便你可以从新文件中读或写到新文件中。

为写到一个现存文件中,你必须首先用OpenFileMode和OpenFile函数以FILE_MODE_APPEND方式打开文件。

·当操作日志被激活时,CreateFile的函数操作不存入到卸载记录中。

如果你想要一个由CreatFile创建的文件被存入到卸载记录中,则当存入功能被激活时,使用XcopyFile传输一个启动程序文件(以你要的文件名)到目标系统。

你用Enable和Disable函数激活和禁用存入功能。

当存入功能被激活时,XcopyFile操作被存入,启动程序文件被存入后,你可以使用CreatFile和其它文件相关函数来写或改写被存入的启动程序文件。

文件名必须保持不变否则它不会在卸载记录中找到。

9.6 DeleteDir

语法:

DeleteDir(szDir,nFlag);

说明:

DeleteDir函数删除一个子目录。

根据你在参数nFlag使用的值,你可以仅当子目录为空时删除它,即使子目录包含文件也删除它,或删除整个根目录。

设置nFlag需特别谨慎。

参数:

szDir

指定要被删除的目录的全限定名。

nFlag

指定删除选项。

在该参数位置传递下列预定义常量之一:

ALLCONTENTS:

删除szDir指定的目录,包括其下的所有子目录和文件。

你删除的目录必须是一个子目录,不能是驱动器上的一个根目录。

ONLYDIR:

仅当szDir指定的目录为空时才删除它。

否则函数失败。

ROOT:

即使szDir指定的目录是根目录也要删除它。

如果szDir是一个根目录,DeleteDir将删除磁盘上一切东西。

返回值:

0:

表明函数成功删除子目录。

<0:

表明函数未能删除子目录。

注解:

·你不能删除当前目录。

·你不能删除一个网络系统上你没有适当权利的文件。

·DeleteDir不能删除只读,隐藏或系统文件。

·如果DeleteDir遇到一个只读文件,该函数可能在只删除子目录中一些文件后失败。

9.7 DeleteFile

语法:

DeleteFile(szFile);

说明:

DeleteFile函数删除一个或多个文件。

注意DeleteFile不能删除只读,隐藏或系统文件。

如果你试图删除一个网络系统上你没有适当文件权利的文件时,该函数不起作用。

参数:

szFile

指定要删除文件的名称。

如果szFile指定一个全限定名,也就是,包括一个路径,DeleteFile将从指定目录删除该文件。

如果szFile包含一个未限定文件名,也就是,没有路径信息,DeleteFile将从由系统变量TARGETDIR指定的目录中删除文件。

可以在szFile中包含通配符来删除多个文件。

返回值:

0:

表明函数成功删除指定文件。

<0:

表明函数未能删除指定文件。

注解:

你在使用FindFile时可以使用通配符来定位文件然后用DeleteFile删除它们。

9.8 ExistsDir

语法:

ExistsDir(szPath);

说明:

ExistsDir函数在目标系统上检测指定目录的存在性。

参数:

szPath

指定要在目标系统上找到的目录的全限定路径。

返回值:

EXISTS(0):

表明指定目录存在于目标系统上。

NOTEXISTS(-1):

表明指定目录不存在于目标系统上。

9.9 ExistsDisk

语法:

ExistsDisk(szDisk);

说明:

ExistsDisk函数在目标系统上检测指定磁盘驱动器的存在性。

参数:

szDisk

指定磁盘驱动器字符。

返回值:

EXISTS(0):

表明目标系统上存在指定驱动器。

NOTEXISTS(-1):

表明目标系统上不存在指定驱动器。

9.10 FileCompare

语法:

FileCompare(szFileName1,szFileName2,nCompareFlag);

说明:

FileCompare函数比较两个文件的大小,日期或版本。

参数:

szFileName1

指定要比较的第一个文件的全限定名。

szFileName2

指定要比较的第二个文件的全限定名。

nCompareFlag

指定比较选项。

在该参数位置传递下列预定义常量之一:

COMPARE_SIZE:

比较两个文件的大小。

COMPARE_DATE:

比较两个文件的日期。

COMPARE_VERSION:

比较两个文件的版本资源。

返回值:

EQUALS

(2):

第一个文件的日期,大小或版本和第二个的相等。

FILE_NOT_FOUND(-2):

函数未能找到一个文件或都未能找到。

GREATER_THAN(0):

第一个文件比第二个文件更新或更大,根据在参数nCompareFlag使用的常量:

.COMPARE_VERSION

文件一比文件二新。

.COMPARE_DATE

文件一比文件二日期后。

.COMPARE_SIZE

文件一比文件二大。

.LESS_THAN

(1)

文件一比文件二旧或小。

OTHER_FAILURE(-1)

发生不确定错误。

9.11 FileDeleteLine

语法:

FileDeleteLine(szFileName,nStartLineNum,nEndLineNum);

说明:

FileDeleteLine函数从一个文本文件中使用一个起始行和结束行行号来删除该区域的行(包括起始行和结束行)。

该函数作用于面向行的文本文件;它不作用于二进制文件。

你可以使用FileDeleteLine和FileGrep函数来查找和删除一个文件中的文本行。

   由szFileName指定的文件必须尚未通过调用OpenFile被打开。

如果szFileName已经被打开,在调用FileDeleteLine前调用CloseFile。

参数:

szFileName

指定文件的全限定名,它位于系统变量SRCDIR指定的目录中。

如果该文件存在,由nStartLineNum和nEndLineNum指定的行将从该文件中删除。

nStartLineNum

指定要从文件中删除的第一行的行号。

注意行从0开始编号。

nEndLineNum

指定要从文件中删除的最后一行的行号。

注意行从0开始编号。

为了从nStartLineNum指定的行开始删除到文件结尾,给该参数传递预定义常量DELETE_EOF。

返回值:

0:

FileDeleteLine从该文件成功删除指定行。

<0:

FileDeleteLine因为下列情况之一而失败:

FILE_NOT_FOUND(-2):

InstallShield未能找到szFileName指定的文件。

FILE_RD_ONLY(-5):

文件是写保护的。

LINE_NUMBER(-7):

一个你所指定的行号小于0,或者文件中没有该行号。

OUT_OF_DISK_SPACE(-6):

没有足够的磁盘驱动器空间来完成指定操作。

OTHER_FAILURE(-1):

发生其它一些不确定错误。

9.12 FileGrep

语法:

FileGrep(szFileName,szSearchStr,svReturnLine,nvLineNumber,nFlag);

说明:

FileGrep函数在一个文本文件中查找一个指定字符串。

如果字符串被找到,包含该字符串的行被返回到参数svReturnLine,该行的行号被返回到参数nvLineNumber。

查找不区分大小写。

FileGrep作用于面向行的文本文件;它不作用于二进制文件。

   在用FileGrep查找一个文件之前没有必要打开它;你也无须在调用FileGrep之后关闭它。

文件打开和文件关闭由FileGrep自动执行。

虽然多数情况下,FileGrep对一个已经被打开的文件(先前调用OpenFile的结果)将成功执行,但如果文件是以添加方式打开时,FileGrep将返回FILE_NOT_FOUND。

参数:

szFileName

指定要查找的文件的全限定名。

szSearchStr

指定查找字符串。

svReturnLine

返回szSearchStr被找到的行。

nvLineNumber

返回szSearchStr被找到的行的行号。

行以0开始编号。

nFlag

指定查找选项。

在该参数位置传递下列预定义常量之一:

CONTINUE:

检索查找字符串的下一个出现(如果有)。

RESTART:

检索查找字符串的第一次出现。

返回值:

0:

FileGrep找到指定字符串。

<0:

FileGrep因下列情况之一而失败:

END_OF_FILE(-4):

没有找到查找字符串而已到文件尾。

FILE_NOT_FOUND(-2):

InstallShield未能找到szFileName指定的文件。

FILE_LINE_LENGTH(-3):

行超过允许的最大长度。

OTHER_FAILURE(-1):

发生一个不确定错误。

9.13 FileInsertLine

语法:

FileInsertLine(szFileName,szInsertLine,nLineNumber,nInsertFlag);

说明:

FileInsertLine函数通过指定行号来插入或置换一行。

你可以将FileInsertLine和FileGrep一起使用,FileGrep找到行并返回它们的行号。

  FileInsertLine工作于面向行的且每行不超过1,024字节的文本文件。

InstallShield假定任何长于最大允许长度的行表明了这是一个二进制文件而导致FileInsertLine失败。

  由szFileName指定的文件必须尚未通过调用OpenFile被打开。

如果szFileName已经被打开,在调用FileInsertLine前调用CloseFile。

参数:

szFileName

指定文件的全限定名,它位于系统变量SRCDIR指定的目录中。

如果该文件存在,则将szInsertLine的值插入其中。

szInsertLine

指定插入到文件中的字符串。

nLineNumber

指定你要将szInsertLine插入到的行号。

第一行行号是0。

nInsertFlag

指定一个插入位置选项。

在该参数位置传递下列预定义常量之一:

BEFORE:

在nLineNumber前插入。

AFTER:

在nLineNumber后插入。

APPEND;将szInsertLine添加到nLineNumber指定的行。

REPLACE:

用szInsertLine置换nLineNumber指定的行。

返回值:

0:

FileInsertLine成功插入行到指定文件。

FILE_LINE_LENGTH(-3):

表明行长超过文本文件允许的最大长度。

FILE_NOT_FOUND(-2):

FileInsertLine未能找到szFileName指定的文件。

FILE_RD_ONLY(-5):

表明文件写保护。

LINE_NUMBER(-7):

表明你指定的行号之一小于0,或在文件中不存在该行号。

OUT_OF_DISK_SPACE(-6):

表明没有足够的磁盘驱动器空间来完成指定操作。

OTHER_FAILURE(-1):

发生一个不确定错误。

9.14 FindAllDirs

语法:

FindAllDirs(szDir,nOp,listDirs);

说明:

FindAllDirs查找整个磁盘或目录的结构并返回一个子目录名的字符串列表。

如果nOp是INCLUDE_SUBDIR,查找从szDir指定的目录开始并继续查找子目录结构。

参数:

szDir

指定查找的目录名。

nOp

指定是否要查找szDir下的所有子目录。

在该参数位置传递下列预定义常量之一:

EXCLUDE_SUBDIR:

不包括子目录。

INCLUDE_SUBDIR:

包括子目录。

listDirs

返回全限定目录名列表。

listDirs标识的字符串列表必须已经通过调用ListCreat被初始化。

返回值:

0:

FindAllDirs成功生成子目录名列表。

<0:

FindAllDirs未能生成一个列表。

注解:

·FindAllDirs从指定目录开始查找一个分层子目录结构。

如果指定目录是一个根目录并且nOp包含INCLUDE_SUBDIR,则返回整个磁盘上的所有目录名。

你可以使用FindAllDirs来找到一个特定目录的子目录,或你可以使用它来找到一个磁盘上的所有目录。

9.15 FindAllFiles

语法:

FindAllFiles(szDir,szFileName,svResult,nOp);

说明:

F

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1