找回密码
 注册
搜索
查看: 4528|回复: 0

[收藏]文件操作 API 函数介绍

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍
* g3 `& u9 K* _, o
0 ?& `4 `" p) Y$ d3 b) d. ~6 ]; v: F
作者:zhanglc
' i2 v# e: k; T2 T' a) f0 w
6 Y7 y8 R2 Q2 c+ X$ J% ^
" w7 g: o( u- k+ f4 N- F- h) Q+ E    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:
0 M* m  O. [( E& x# z, m# g& {& o  i% j4 Q7 {
一般文件操作 API. q" l  f/ O$ ^2 Q- j. L

5 D4 V6 z3 k. k" i; tCreateFile2 Z- E- K% d$ ]5 K% ^* N. H- F
打开文件% `3 B, F* Y" L1 G9 l. Z0 v
要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。. r0 a1 u, H: X* j% n; T- T

$ M5 J# N/ G! o+ NReadFile
8 {4 {9 p3 I+ H: e: D1 Y从文件中读取字节信息。
+ T/ `$ f& E% Z! r- s在打开文件获得了文件句柄之后,则可以通过该函数读取数据。: l7 z/ b! R4 W  G

* ?3 K& ~  R5 nWriteFile ; Y' I( t& a$ h2 C) C4 C' ~8 \' y( l/ T
向文件写入字节信息。 ( D- B8 V9 Z. b% y+ m! i
同样可以将文件句柄传给该函数,从而实现对文件数据的写入。3 F2 g8 D% M- j

: Y& q7 ?& S: J0 t9 w9 T3 q) cCloseHandle ' _! X" H0 `8 ~. A3 A8 F
关闭文件句柄。
9 ?" I- u. S' P" k3 c8 A打开门之后,自然要记得关上。6 l: n& B& ]- C. V$ d
  H: {/ R" k! t
GetFileTime
( |4 H9 W  M& ?获取文件时间。
& o' W5 {6 M0 I+ h) c有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。 ' r1 l7 ]: B2 w8 S( n/ j* s# b
该函数同样需要文件句柄作为入口参数。% A. f8 Q' b3 T: B/ m
7 h0 s5 T2 j. m* v1 B8 j7 z
GetFileSize
4 Z1 O* N# F8 P" [获取文件大小。 ! o$ d% h' }3 z# J& z
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。 7 A9 n  x  ~/ ?, U
该函数同样需要文件句柄作为入口参数。" {% s6 i5 @. V  ?( F& w" T
6 Y; ^6 ]. C5 `
GetFileAttributes
- k0 ]3 Z: {+ }' j! f& e* \获取文件属性。 & U' Y' T% M6 a) t0 n
可以获取文件的存档、只读、系统、隐藏等属性。
6 m3 e/ `) m) j7 a0 @/ D该函数只需一个文件路径作为参数。( _) I4 ^' ^- V# F

5 ]/ {2 W4 i/ b" dSetFileAttributes . Z3 x9 Y) f* S' T
设置文件属性。
' J- P+ |4 E8 f- }+ y0 w能获取,自然也应该能设置。
7 ?3 J! y  C+ H/ n可以设置文件的存档、只读、系统、隐藏等属性。 , y* c6 W. E3 w4 s) y0 h/ R8 z! ^
该函数只需一个文件路径作为参数。
9 ^0 k% M2 @4 p
8 W) I2 l: ?9 E  X  w1 ~& MGetFileInformationByHandle & U. w! J: ]% x
获取所有文件信息
9 k2 u5 i. M& O8 z) r5 q% n该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。
2 ?7 A# ]$ `) E4 p0 e该函数需要文件句柄作为入口参数。0 |8 h& P0 R  T, X

. f3 b1 J- H$ S3 U% P! cGetFullPathName 2 p6 M  c% i+ V% `: f- R
获取文件路径,该函数获取文件的完整路径名。
7 Q) z- `* Z% N/ Z3 s需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。4 z7 X( n- {( B: K0 l  C6 Y6 y

2 d! _) ~& R( {4 t  @5 UCopyFile $ X( Y4 s1 u& D% [/ x
复制文件
- b3 ^; N: D, I+ h. ^- [注意:只能复制文件,而不能复制目录
! C0 k- B4 u% c/ R* F5 d. t) t" l  p- ^
MoveFileEx
: r: ?  S: U& G, q) X移动文件
. w0 T9 c6 J  F0 P既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)! ?4 j0 w! K5 X- X$ F
6 d) j# T# y4 F% u9 [1 s' n
DeleteFile
$ z2 N5 ~1 ^4 g删除文件
# f  F# O: B  |9 v: S' x/ N; o* z
) e- N+ j7 K# I8 ^! oGetTempPath
1 H" d1 U; P" F7 W, F# }5 C5 n  N获取Windows临时目录路径1 @  E; _' h" g: q* C

: R3 U  b! }4 T6 |1 CGetTempFileName - u5 r( O, m  `' V( E$ U6 Z
在Windows临时目录路径下创建一个唯一的临时文件1 z, j! u6 C- q9 C/ B5 g

- W7 b& R( t+ M% B& ?SetFilePoint 9 q) T& A6 k) @! L+ ?7 T
移动文件指针。 + d+ I0 i: X7 w0 U3 G
该函数用于对文件进行高级读写操作时。1 \  |+ r' {  ^& ~* P
( I6 r( N+ f! |
. q9 ^: _5 E+ P0 q
文件的锁定和解锁
9 L8 Q  r. p9 s3 l3 O/ D$ z5 B. q8 x1 H0 Q. G0 `0 W
LockFile 8 @1 @' A1 P8 x
UnlockFile
: j+ a& k2 }- [9 ~. x. \LockFileEx * K0 F$ j& c2 H2 F4 W2 w* C' H( ?$ S
UnlockFileEx 7 [* u$ S! F  W# z' o
$ X2 f5 N6 W, Z' `( @9 ]# h4 V
以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。
) A  `' e* E# B0 T7 x. n4 k- o$ q0 O, F8 e  X
文件的压缩和解压缩3 w4 c4 l$ e" C' l. z2 E3 y" T/ d
0 x! g; m+ t6 [% @! {- k
LZOpenFile
5 |1 _8 y2 V& q; u) U打开压缩文件以读取
  t8 \9 Q  K: Q9 E: z$ y( q- E2 z( ]! T! ]1 e! J2 p8 [- O9 {$ H4 Y
LZSeek
* v) A& U! w! a) y3 B6 J查找压缩文件中的一个位置9 Z  b' l+ y0 ^8 I3 B
4 T: }& N0 g0 O- p& v, k
LZRead - ^7 k! e- r1 _& u
读一个压缩文件
9 Q$ p: R6 ^$ e& [4 e& e& [/ C+ D0 ^# w
LZClose
* G9 P4 {6 O5 X3 V关闭一个压缩文件" I% t4 A5 n, `

; g* `; d5 X9 |1 B6 G% n" TLZCopy
7 Z. l/ Y1 S) U! G复制压缩文件并在处理过程中展开
- |9 W& v6 V, W( o" k! ]
/ A% w; Y' {3 |1 _1 G8 u, mGetExpandedName 4 A& h4 t9 E. }
从压缩文件中返回文件名称。
1 M& G  K+ P9 Q& D2 |) a6 j+ g# T. P& }& V2 c3 ?) X
以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。- f% v" r% p9 w0 X# d) P8 y" D
7 F# d# o, a7 T7 F

" w# s# `0 j/ Z! Y& O8 N 文件内核对象
4 d& n: U1 @3 e6 W; \) q7 t9 H. U) F  C/ p0 I; G
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。( c1 R/ ]% Y3 x/ |+ ~6 ?
+ L* `2 P: X: n2 T
CreateFileMapping
4 F, ]) x1 o4 S+ w6 X2 @创建和命名映射! d! S! w; K4 F
; E6 V0 F. I: I) @( V7 ^5 B
MapViewOfFile
+ T/ ?6 y$ ]( |把文件映射装载如内存
# D8 [/ B3 X/ b* D( u, l& F3 s# Z8 w5 W4 c* O8 k
UnmapViewOfFile ' S  S. o! n/ F; N/ ~" z
释放视图并把变化写回文件1 e. v8 E! I" o; G+ u4 F" |
" U  S$ \' R. S
FlushViewOfFile
' B9 L; E4 |+ Z* V* {9 C2 H将视图的变化刷新写入磁盘
  L* T1 h! D% c, a& L
6 |- Q1 h$ ]; M2 ?( r& d希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-12-30 04:49 , Processed in 0.020001 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表