9 ChangeDirectory 使指定的目錄為當(dāng)前目錄。 CloseFile 關(guān)閉一個打開的文件。 CopyFile 將一個文件從一個文件夾拷貝到另一個。 CreateDir 創(chuàng)建一個新文件夾。 CreateFile 創(chuàng)建一個指定文件名的文件。 DeleteDir 刪除一個文件夾。 DeleteFile 刪除一個文件。 ExistsDir 確定指定目錄是否存在。 ExistsDisk 確定指定磁盤是否存在。 FileCompare 將一個文件和另一個比較。 FileDeleteLine 刪除一個文本文件中的一行。 FileGrep 在一個文本文件中查找指定文本。 FileInsertLine 在一個文本文件中插入一行。 FindAllDirs 查找指定文件夾下的所有子文件夾。 FindAllFiles 查找指定文件夾中的所有和一個文件說明匹配的文件和它的子文件夾。 FindFile 查找在指定文件夾中和一個文件說明匹配的第一個文件。 GetFileInfo 檢索一個文件的屬性,日期,時間和大小。 GetLine 從一個打開的文件中檢索一行文本。 OpenFile 打開一現(xiàn)存文件。 OpenFileMode 用OpenFile函數(shù)設(shè)置文件打開的方式。 ReadBytes 從一個二進制文件中讀取指定的字節(jié)數(shù)。 RenameFile 更名一個文件。 SeekBytes 在一個二進制文件中定位文件指針。 SetFileInfo 設(shè)置一個文件的屬性,日期和時間。 WriteBytes 在一個二進制文件的當(dāng)前文件指針位置寫入指定數(shù)目的字節(jié)。 WriteLine 將一個字符串寫入一個文本文件。 XCopyFile 將一個或多個文件從一個源文件夾拷貝到一個目標(biāo)文件夾,如果指定則包括子文件夾。 相關(guān)函數(shù) SelectDir 請參閱4.10。 9.1 語法:ChangeDirectory (szPath); 說明:ChangeDirectory函數(shù)設(shè)置當(dāng)前目錄。 參數(shù): szPath 指定要被設(shè)置為當(dāng)前目錄的目錄名。該名可以是一個全限定路徑名或一個UNC路徑;它必須不包括一個尾隨反斜杠。如有必要,在調(diào)用ChangeDirectory前調(diào)用StrRemoveLastSlash。 返回值: 0:ChangeDirectory成功設(shè)置指定目錄為當(dāng)前目錄。 < 0:ChangeDirectory未能設(shè)置指定目錄為當(dāng)前目錄。 注解: ·注意在你調(diào)用ChangeDirectory將一個指定目錄設(shè)為當(dāng)前目錄后,該目錄不能被刪除。在你可以刪除該目錄前,你必須再次調(diào)用ChangeDirectory來設(shè)置一個不同的當(dāng)前目錄。 9.2 語法:CloseFile (nvFileHandle); 說明:CloseFile函數(shù)關(guān)閉一個已經(jīng)由調(diào)用OpenFile打開的文件。在你關(guān)閉一個文件后,你不能從中讀或?qū)懙皆撐募?br> 參數(shù): nvFileHandle 指定要關(guān)閉的文件的句柄。 返回值: 0:表明該函數(shù)成功關(guān)閉該文件。 < 0:表明該函數(shù)未能關(guān)閉該文件。 9.3 語法:CopyFile (szSrcFile, szTargetFile); 說明:CopyFile函數(shù)創(chuàng)建一個由參數(shù)szSrcFile指定的文件的拷貝。新文件由參數(shù)szTargetFile指定文件名。 參數(shù): szSrcFile 指定要拷貝的文件的文件名。如果該文件名是限定的,也就是,如果它包括一個路徑,CopyFile將從指定位置拷貝該文件。如果szSrcFile包含一個未限定文件名,也就是,沒有路徑信息,CopyFile將從由系統(tǒng)變量SRCDIR標(biāo)識的路徑拷貝。為拷貝一組文件,在該參數(shù)位置使用通配符。 szTargetFile 指定給由szSrcFile標(biāo)識的文件的拷貝的名稱。如果文件名是限定的,也就是,如果它包含一個路徑,CopyFile將把文件拷貝到路徑指定的位置。如果szSrcFile包含一個未限定文件名,也就是,沒有路徑信息,拷貝將被創(chuàng)建在由系統(tǒng)變量TARGETDIR指定的目錄中。如果目標(biāo)目錄不存在,它將被創(chuàng)建。 返回值: 0:表明函數(shù)成功地從源目錄拷貝文件至目標(biāo)目錄。 < 0:表明函數(shù)因下列情況之一未能拷貝所要文件: COPY_ERR_CREATEDIR (-27):目標(biāo)目錄不能被創(chuàng)建。確保系統(tǒng)變量TARGETDIR中的路徑語法正確并且你有權(quán)訪問目標(biāo)驅(qū)動器。 COPY_ERR_MEMORY (-6):函數(shù)未能分配完成拷貝文件進程所需的內(nèi)存。盡可能多地終止正在運行的應(yīng)用程序以釋放內(nèi)存。 COPY_ERR_NODISKSPACE (-38):函數(shù)未能在目標(biāo)驅(qū)動器上找到足夠的磁盤空間來拷貝文件。在目標(biāo)驅(qū)動器上釋放磁盤空間。 COPY_ERR_OPENINPUT (-2):函數(shù)未能打開系統(tǒng)變量SRCDIR指定的輸入文件。確保源文件有一個有效的文件名并且源文件和目標(biāo)目錄都存在。 COPY_ERR_OPENOUTPUT (-3):函數(shù)未能拷貝所要文件。 COPY_ERR_TARGETREADONLY (-46):TARGETDIR中的文件是只讀文件。刪除目標(biāo)文件的只讀屬性并重試。 所有其它負(fù)值:表明發(fā)生一些其它不確定錯誤。 注解: ·如果你使用未限定文件名并在使用CopyFile時設(shè)置SRCDIR和 TARGETDIR的值,在調(diào)用CopyFile前用VarSave保存當(dāng)前值并然后用VarRestore重新設(shè)置。如果目標(biāo)目錄不存在,CopyFile創(chuàng)建它。 ·你不能通過調(diào)用CopyFile時使用通配符來重命名一組文件。然而,單獨一個文件時你可以使用CopyFile來做到。 ·為包括子目錄,調(diào)用XcopyFile函數(shù)。 ·對于文件傳輸,XCopyFile 是CopyFile的一個完美替換。XCopyFile可以做版本檢測,標(biāo)記鎖定的.dll和.exe文件待系統(tǒng)重啟后更新,并且遞增共享的.dll和.exe文件的注冊表訪問計數(shù)器。 ·因為Windows 95及更高版本不允許一個空文件被拷貝,Windows NT不允許創(chuàng)建空文件,CopyFile在這些平臺下當(dāng)被用來拷貝空文件(Size=0KB)時將不工作。 · 在用WriteProfString 或 WriteProfInt修改.ini文件后, Windows 95及更高版本下,你必須在使用CopyFile前刷新高速緩存。所有.ini文件在Windows 95及更高版本下被放在高速緩存中;這種特性可能導(dǎo)致延遲將修改寫到指定文件。這接著可能妨礙隨后的文件操作。為避免這個問題,簡單地以空參數(shù)調(diào)用WriteProfString來強制Windows 95 及更高版本立即寫數(shù)據(jù)到.ini文件,如下所示: 9.4 語法:CreateDir (szDirPath); 說明:CreateDir函數(shù)在目標(biāo)驅(qū)動器上創(chuàng)建一個或多個子目錄。你可以使用一個包含多層子目錄的路徑,如C:\Programs\Winapps\Myapp。任何路徑中不存在的子目錄,CreatDir將創(chuàng)建它。例如,如果C:\Programs\Winapps 和 C:\Programs\Winapps\Myapp都不存在,這些子目錄將都被CreatDir創(chuàng)建。 參數(shù): szDirPath 指定要創(chuàng)建的子目錄的全限定路徑。將路徑中的每層用一個反斜杠分隔(通過使用反斜杠轉(zhuǎn)義符(\\))。 返回值: 0:表明函數(shù)在目標(biāo)驅(qū)動器上成功創(chuàng)建指定目錄或指定目錄已經(jīng)存在。 < 0:表明指定目錄不存在并且函數(shù)未能創(chuàng)建指定它。 注解: 下列情況下CreatDir將失?。?br> 路徑非法; 驅(qū)動器或路徑上的任何子目錄是寫保護的; 驅(qū)動器名無效; 你沒有網(wǎng)絡(luò)特權(quán)來創(chuàng)建子目錄。 9.5 語法:CreateFile (nvFileHandle, szPath, szFileName); 說明:CreateFile函數(shù)創(chuàng)建一個新文件。如果相同名的文件已經(jīng)存在,CreateFile改寫它。在你用CreateFile創(chuàng)建一個文件前,你必須用OpenFileMode設(shè)置文件方式。 參數(shù): nvFileHandle 返回新文件的句柄。 szPath 指定新文件創(chuàng)建所在的子目錄的全限定路徑。 szFileName 指定創(chuàng)建的文件的文件名。 返回值: 0:表明函數(shù)成功創(chuàng)建新文件。 < 0:表明函數(shù)未能創(chuàng)建新文件。 注解: ·CreateFile創(chuàng)建一個新文件并把它打開以便你可以從新文件中讀或?qū)懙叫挛募?。為寫到一個現(xiàn)存文件中,你必須首先用OpenFileMode 和OpenFile函數(shù)以FILE_MODE_APPEND方式打開文件。 ·當(dāng)操作日志被激活時,CreateFile的函數(shù)操作不存入到卸載記錄中。如果你想要一個由CreatFile創(chuàng)建的文件被存入到卸載記錄中,則當(dāng)存入功能被激活時,使用XcopyFile傳輸一個啟動程序文件(以你要的文件名)到目標(biāo)系統(tǒng)。你用Enable 和Disable函數(shù)激活和禁用存入功能。當(dāng)存入功能被激活時,XcopyFile操作被存入,啟動程序文件被存入后,你可以使用CreatFile和其它文件相關(guān)函數(shù)來寫或改寫被存入的啟動程序文件。文件名必須保持不變否則它不會在卸載記錄中找到。 9.6 語法:DeleteDir(szDir, nFlag); 說明:DeleteDir函數(shù)刪除一個子目錄。根據(jù)你在參數(shù)nFlag使用的值,你可以僅當(dāng)子目錄為空時刪除它,即使子目錄包含文件也刪除它,或刪除整個根目錄。設(shè)置nFlag需特別謹(jǐn)慎。 參數(shù): szDir 指定要被刪除的目錄的全限定名。 nFlag 指定刪除選項。在該參數(shù)位置傳遞下列預(yù)定義常量之一: ALLCONTENTS:刪除szDir指定的目錄,包括其下的所有子目錄和文件。你刪除的目錄必須是一個子目錄,不能是驅(qū)動器上的一個根目錄。 ONLYDIR:僅當(dāng)szDir指定的目錄為空時才刪除它。否則函數(shù)失敗。 ROOT:即使szDir指定的目錄是根目錄也要刪除它。如果szDir是一個根目錄,DeleteDir將刪除磁盤上一切東西。 返回值: 0:表明函數(shù)成功刪除子目錄。 < 0:表明函數(shù)未能刪除子目錄。 注解: ·你不能刪除當(dāng)前目錄。 ·你不能刪除一個網(wǎng)絡(luò)系統(tǒng)上你沒有適當(dāng)權(quán)利的文件。 ·DeleteDir不能刪除只讀,隱藏或系統(tǒng)文件。 ·如果DeleteDir遇到一個只讀文件,該函數(shù)可能在只刪除子目錄中一些文件后失敗。 9.7 語法:DeleteFile (szFile); 說明:DeleteFile函數(shù)刪除一個或多個文件。注意DeleteFile不能刪除只讀,隱藏或系統(tǒng)文件。如果你試圖刪除一個網(wǎng)絡(luò)系統(tǒng)上你沒有適當(dāng)文件權(quán)利的文件時,該函數(shù)不起作用。 參數(shù): szFile 指定要刪除文件的名稱。如果szFile指定一個全限定名,也就是,包括一個路徑,DeleteFile將從指定目錄刪除該文件。如果szFile包含一個未限定文件名,也就是,沒有路徑信息,DeleteFile將從由系統(tǒng)變量TARGETDIR指定的目錄中刪除文件。可以在szFile中包含通配符來刪除多個文件。 返回值: 0:表明函數(shù)成功刪除指定文件。 < 0:表明函數(shù)未能刪除指定文件。 注解: 你在使用FindFile時可以使用通配符來定位文件然后用DeleteFile刪除它們。 9.8 語法:ExistsDir (szPath); 說明:ExistsDir函數(shù)在目標(biāo)系統(tǒng)上檢測指定目錄的存在性。 參數(shù): szPath 指定要在目標(biāo)系統(tǒng)上找到的目錄的全限定路徑。 返回值: EXISTS (0):表明指定目錄存在于目標(biāo)系統(tǒng)上。 NOTEXISTS (-1):表明指定目錄不存在于目標(biāo)系統(tǒng)上。 9.9 語法:ExistsDisk (szDisk); 說明:ExistsDisk函數(shù)在目標(biāo)系統(tǒng)上檢測指定磁盤驅(qū)動器的存在性。 參數(shù): szDisk 指定磁盤驅(qū)動器字符。 返回值: EXISTS (0):表明目標(biāo)系統(tǒng)上存在指定驅(qū)動器。 NOTEXISTS (-1):表明目標(biāo)系統(tǒng)上不存在指定驅(qū)動器。 9.10 語法:FileCompare (szFileName1, szFileName2, nCompareFlag); 說明:FileCompare函數(shù)比較兩個文件的大小,日期或版本。 參數(shù): szFileName1 指定要比較的第一個文件的全限定名。 szFileName2 指定要比較的第二個文件的全限定名。 nCompareFlag 指定比較選項。在該參數(shù)位置傳遞下列預(yù)定義常量之一: COMPARE_SIZE:比較兩個文件的大小。 COMPARE_DATE:比較兩個文件的日期。 COMPARE_VERSION:比較兩個文件的版本資源。 返回值: EQUALS (2):第一個文件的日期,大小或版本和第二個的相等。 FILE_NOT_FOUND (-2):函數(shù)未能找到一個文件或都未能找到。 GREATER_THAN (0):第一個文件比第二個文件更新或更大,根據(jù)在參數(shù)nCompareFlag使用的常量: .COMPARE_VERSION 文件一比文件二新。 .COMPARE_DATE 文件一比文件二日期后。 .COMPARE_SIZE 文件一比文件二大。 .LESS_THAN (1) 文件一比文件二舊或小。 OTHER_FAILURE (-1) 發(fā)生不確定錯誤。 9.11 語法:FileDeleteLine (szFileName, nStartLineNum, nEndLineNum); 說明:FileDeleteLine函數(shù)從一個文本文件中使用一個起始行和結(jié)束行行號來刪除該區(qū)域的行(包括起始行和結(jié)束行)。該函數(shù)作用于面向行的文本文件;它不作用于二進制文件。你可以使用FileDeleteLine 和FileGrep函數(shù)來查找和刪除一個文件中的文本行。 參數(shù): szFileName 指定文件的全限定名,它位于系統(tǒng)變量SRCDIR指定的目錄中。如果該文件存在,由nStartLineNum 和nEndLineNum指定的行將從該文件中刪除。 nStartLineNum 指定要從文件中刪除的第一行的行號。注意行從0開始編號。 nEndLineNum 指定要從文件中刪除的最后一行的行號。注意行從0開始編號。為了從nStartLineNum指定的行開始刪除到文件結(jié)尾,給該參數(shù)傳遞預(yù)定義常量DELETE_EOF。 返回值: 0:FileDeleteLine從該文件成功刪除指定行。 < 0:FileDeleteLine因為下列情況之一而失?。?br> FILE_NOT_FOUND (-2):InstallShield未能找到szFileName指定的文件。 FILE_RD_ONLY (-5):文件是寫保護的。 LINE_NUMBER (-7):一個你所指定的行號小于0,或者文件中沒有該行號。 OUT_OF_DISK_SPACE (-6):沒有足夠的磁盤驅(qū)動器空間來完成指定操作。 OTHER_FAILURE (-1):發(fā)生其它一些不確定錯誤。 9.12 語法:FileGrep (szFileName, szSearchStr, svReturnLine, nvLineNumber, nFlag); 說明:FileGrep函數(shù)在一個文本文件中查找一個指定字符串。如果字符串被找到,包含該字符串的行被返回到參數(shù)svReturnLine,該行的行號被返回到參數(shù)nvLineNumber。查找不區(qū)分大小寫。FileGrep作用于面向行的文本文件;它不作用于二進制文件。 參數(shù): szFileName 指定要查找的文件的全限定名。 szSearchStr 指定查找字符串。 svReturnLine 返回szSearchStr被找到的行。 nvLineNumber 返回szSearchStr被找到的行的行號。行以0開始編號。 nFlag 指定查找選項。在該參數(shù)位置傳遞下列預(yù)定義常量之一: CONTINUE:檢索查找字符串的下一個出現(xiàn)(如果有)。 RESTART:檢索查找字符串的第一次出現(xiàn)。 返回值: 0:FileGrep找到指定字符串。 < 0:FileGrep因下列情況之一而失?。?br> END_OF_FILE (-4):沒有找到查找字符串而已到文件尾。 FILE_NOT_FOUND (-2):InstallShield未能找到szFileName指定的文件。 FILE_LINE_LENGTH (-3):行超過允許的最大長度。 OTHER_FAILURE (-1):發(fā)生一個不確定錯誤。 9.13 語法:FileInsertLine (szFileName, szInsertLine, nLineNumber, nInsertFlag); 說明:FileInsertLine函數(shù)通過指定行號來插入或置換一行。你可以將FileInsertLine 和 FileGrep一起使用,F(xiàn)ileGrep找到行并返回它們的行號。 FileInsertLine工作于面向行的且每行不超過1,024字節(jié)的文本文件。InstallShield假定任何長于最大允許長度的行表明了這是一個二進制文件而導(dǎo)致FileInsertLine失敗。 由szFileName指定的文件必須尚未通過調(diào)用OpenFile被打開。如果szFileName已經(jīng)被打開,在調(diào)用FileInsertLine前調(diào)用CloseFile。 參數(shù): szFileName 指定文件的全限定名,它位于系統(tǒng)變量SRCDIR指定的目錄中。如果該文件存在,則將szInsertLine的值插入其中。 szInsertLine 指定插入到文件中的字符串。 nLineNumber 指定你要將szInsertLine插入到的行號。第一行行號是0。 nInsertFlag 指定一個插入位置選項。在該參數(shù)位置傳遞下列預(yù)定義常量之一: 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):表明沒有足夠的磁盤驅(qū)動器空間來完成指定操作。 OTHER_FAILURE (-1):發(fā)生一個不確定錯誤。 |
|