Visual Basic文件系統(tǒng)設(shè)置列表
發(fā)表時(shí)間:2023-08-04 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]VB是現(xiàn)在比較流行的一種語(yǔ)言,相關(guān)的書籍也非常多,因此在這里也就沒有必要介紹基礎(chǔ)的內(nèi)容了(如果非要,那你就去買本VB入門的書吧)。在編程的過程中我們經(jīng)常會(huì)用到對(duì)文件系統(tǒng)的操作,下面是我在實(shí)際應(yīng)用中(...
VB是現(xiàn)在比較流行的一種語(yǔ)言,相關(guān)的書籍也非常多,因此在這里也就沒有必要介紹基礎(chǔ)的內(nèi)容了(如果非要,那你就去買本VB入門的書吧)。在編程的過程中我們經(jīng)常會(huì)用到對(duì)文件系統(tǒng)的操作,下面是我在實(shí)際應(yīng)用中(或在網(wǎng)上收集)的相關(guān)技巧(大部分是 API 技巧),經(jīng)過仔細(xì)的整理后,希望對(duì)大家學(xué)習(xí)提高VB編程有幫助。
讀取 Windows 所在目錄
API函數(shù):GetWindowsDirectory Private Declare Function GetWindowsDirectory Lib″kernel32″ Alias ″GetWindowsDirectoryA″(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const MAX-PATH = 260
′定義足夠長(zhǎng)的字符串
Sub GetWinDir()′定義函數(shù)
Dim S As String, Length As Long
S = String(MAX-PATH, 0)′賦值
Length=GetWindowsDirectory(S, MAX-PATH)
′S為取得目錄,MAX-PATH 為長(zhǎng)度
S = Left(S, InStr(S, Chr(0)) - 1)
′去掉多余的空格
MsgBox ″Windows 路徑=″ & S,″Win 目錄″
End Sub
補(bǔ)充:S 和 MAX-PATH 的值是可以隨便賦的,
如:Dim S as String *20
Length = GetWindowsDirectory(S,20)
不過,這兩個(gè)的值,一定要夠大(一定要大于系統(tǒng)的 Windows 的目錄的字符數(shù)),不然就不能正常運(yùn)行。
讀取Windows\System 的所在目錄
API 函數(shù):GetSystemDirectory
Private Declare Function GetSystemDirectory Lib ″kernel32″ Alias ″GetSystemDirectoryA″(ByVal lpBuffer As String, ByVal nSize As Long) As Long
大家注意這個(gè) API 函數(shù)和一個(gè)的用法完全一樣,只是把相應(yīng)的位置做一個(gè)修改就行了,因此這里就不在多講了。
復(fù)制整個(gè)目錄
(包含子目錄及其所有文件)
假設(shè)我們想把″c:\vb″目錄下的所有文件(包含其子目錄)復(fù)制到″d:\vb″目錄下。
程序代碼如下:
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO-COPY′拷貝
SHFileOp.pFrom = ″c:\vb*.*″
′也可以指定成 ″c:\vb″
SHFileOp.pTO=″d:\vb″′目標(biāo)目錄
SHFileOp.fFlags = FOF-ALLOWUNDO+FOF-NOCONFIRMMKDIR
′在復(fù)制文件時(shí)若需要建立目錄,不預(yù)先征詢使用者即直接建立
SHFileOperation SHFileOp′執(zhí)行
讀取磁盤的空間及可用空間
API 函數(shù):GetDiskFreeSpace
Private Declare Function GetDiskFreeSpace Lib ″kernel32″ Alias ″GetDiskFreeSpaceA″ (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
參數(shù)說明:
lpRootPathName:驅(qū)動(dòng)器根目錄,以 C 盤為例,必須寫成″C:\″,不可以寫成″C:″或″C″。
lpSectorsPerCluste:每一簇的扇區(qū)數(shù)。
lpBytesPerSector:每一扇區(qū)的字節(jié)數(shù)。
lpNumberOfFreeClusters :可用的簇?cái)?shù)。
lpTtoalNumberOfClusters:總簇?cái)?shù)。
示例:
Dim Sectors As Long, Bytes As Long, Free As Long, Total As Long, FreeMB As Long, TotalMB As Long, WisMB As Long
GetDiskFreeSpace ″c:\ ″, Sectors, Bytes, Free, Total
FreeMB = Bytes * Sectors * Free \ 1024 \ 1024
′可用空間,以 MB 為單位
TotalMB = Bytes * Sectors * Total \ 1024 \ 1024
′總空間,以 MB 為單位
WisMB = TotalMB - FreeMB
′已用空間,以 MB 為單位
(VB愛好者樂園http://www.d1vb.com)
編注:
API是應(yīng)用程序編程接口 (Application Program Interface) 的縮寫,這是一組供應(yīng)用程序使用的命令,用以向計(jì)算機(jī)的操作系統(tǒng)請(qǐng)求或執(zhí)行更低級(jí)的設(shè)備訪問操作。