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

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

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍
% c+ s8 |( E9 W1 H& ~$ _& V& @. F3 v/ |+ b9 v% X/ w% i
' a6 z+ `4 A7 j; R" A- B
作者:zhanglc: l+ A) r2 r' A9 i# l

* a" Q' M8 E" Y5 e; E) Q. C: [' y
, Y+ v0 W$ ?" a" l! k0 z    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:. F2 }2 H( G: v) W7 @) F. L/ U
7 _" p. ]  |& h5 [- z
一般文件操作 API
& w4 o$ u* X, }' _1 ]& d. A8 ?* Z( z  h# I) x; Y
CreateFile/ z4 |. x0 S9 ~$ h1 }9 O5 Y1 O: ~! V
打开文件
8 q2 |, ?" L0 Z) R; i) A要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。
& @1 H5 U- u! ^7 w
3 d. m4 r+ g' j5 b# Y/ zReadFile
& B0 _7 i1 @8 X# ]& q$ C+ B5 a7 \从文件中读取字节信息。 ) p/ k6 ]' q2 A' d
在打开文件获得了文件句柄之后,则可以通过该函数读取数据。$ J' C% a* l+ ?: i! U% v. X) ~
$ V' p. G, r4 e% B, U" T
WriteFile
' ^% _) {$ P+ S+ ~9 I, L# c向文件写入字节信息。 . l# W/ {7 l4 `" k! v- o
同样可以将文件句柄传给该函数,从而实现对文件数据的写入。6 }5 f6 c  Z* t: c0 {3 V8 ~+ `
; \  y4 M1 W1 n9 r. |, H
CloseHandle ) X6 ~$ H2 C0 Z# Z6 T5 g3 X
关闭文件句柄。
3 s$ i. m7 j, y5 _: J& _打开门之后,自然要记得关上。5 J5 K. q7 q! ~( d8 V5 w+ F

" j- ?' y  j- m9 u" i0 WGetFileTime
/ W: i% M+ A, B: k  v& T* V  s获取文件时间。
) {  a( @# K6 Y! F# c+ M. ~: E有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。
6 F7 t2 C" U% r该函数同样需要文件句柄作为入口参数。
# v& }. C6 w8 }! G+ g& p. n! A8 ^7 h9 r( V* ]  N, N
GetFileSize 2 U& h" m* {5 T" j( p3 E
获取文件大小。 8 {; f  {; j3 N' b
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。 7 y0 c: i3 P! c( v& G8 V. D' O
该函数同样需要文件句柄作为入口参数。
. Z$ [9 S$ t4 r6 x8 h% K8 @
7 P3 s: K$ @7 L; z3 I5 @GetFileAttributes ) O" r2 b! e; v7 D8 X3 Z/ [; F
获取文件属性。
6 J8 ?4 {' z8 G& A  t( N  `4 w& }可以获取文件的存档、只读、系统、隐藏等属性。 ; m2 v: ~. E" I- ]
该函数只需一个文件路径作为参数。$ u$ U' \- A. c' s8 t7 r
. S' @3 v0 l- h2 b- U* l
SetFileAttributes   O* M  T" X+ i. G" _) c
设置文件属性。 : K. t, x* p" L# p! r: f
能获取,自然也应该能设置。
$ F8 a3 l5 r2 y2 Q/ t+ @8 z( g* I可以设置文件的存档、只读、系统、隐藏等属性。
! w' r  P' A( n该函数只需一个文件路径作为参数。
8 l3 |/ U) J  y6 Y  }6 \' ?8 U- a. V+ \4 g( ]
GetFileInformationByHandle : c; `. s- k1 e/ B9 t% _9 \) O
获取所有文件信息
/ C4 i' l5 `1 w" I% P* Y该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。 $ t5 }& S% X- M! Y7 H
该函数需要文件句柄作为入口参数。
$ V7 Y- g# n( i. V& E" j+ T/ B* T2 y1 ~1 \+ N9 a4 E* t  V
GetFullPathName
( o) N/ u2 F* d' s" n! q获取文件路径,该函数获取文件的完整路径名。/ ?( S1 ~* D( _/ ]  Q! V1 |
需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。* K4 B, }8 A1 Z8 ^$ L

3 ?  P1 @$ k& W; V" DCopyFile 2 G3 \# W- |; G  Y2 H
复制文件 9 D, O! d' f/ R9 S# m) p( ?- J
注意:只能复制文件,而不能复制目录
+ O$ P* U3 P0 j1 p1 u3 q' A$ b: y- E; g! ?
MoveFileEx * b( ]! a0 K3 u1 S& I# u- `
移动文件
7 r/ I- [6 o, @# g既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)& `" ?5 U7 h$ }% M9 E) E% o/ \6 k

  |! T! I5 u' h' v! iDeleteFile
9 S$ m8 ^" |- q" t" C删除文件
+ G5 v; P, `- x$ x, `+ a6 r
4 I- |& q9 }* w4 GGetTempPath 1 H, |! o9 J6 {! l4 J2 @1 B6 O+ N
获取Windows临时目录路径' M* Y$ w# O& f3 N8 r# k2 q+ `( L

* X6 a, r- V* {" f* y5 U* u9 nGetTempFileName 4 u& o* k! @5 X
在Windows临时目录路径下创建一个唯一的临时文件
/ R+ q6 h( d- W8 {$ G, H1 Q
, l) q1 K$ J* m1 [  vSetFilePoint
. }1 j" Z+ I2 n$ c0 r移动文件指针。
0 f8 [( @' Q' W+ e/ t该函数用于对文件进行高级读写操作时。) Q1 g. ]# E; t3 h7 Q

2 h+ }0 l- J# ~4 j9 t! d3 ]% ^% E8 [9 Q6 S* n6 p% Z* s8 }) t9 _/ u2 F
文件的锁定和解锁- ^% R; P$ W- K; _" s

9 Y; M* R: n8 X: }LockFile
% p, n1 f( N3 X& c+ o2 CUnlockFile
; r- \3 {3 Q7 y0 w# \* XLockFileEx
4 Q3 s' _5 c$ V6 m/ |# t3 Z& uUnlockFileEx 0 ]+ f% X* f3 I5 L/ n( R! W

% n6 f" k- D4 y9 k; g2 x以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。5 L6 l' w/ J; w# w

7 W7 L- K! Q9 G' q 文件的压缩和解压缩
; z1 B; [3 O+ g1 q; m5 J; ?' f8 H- M* {9 Y; ^& e% ?/ ]
LZOpenFile
  S! }( Y% v! w; l打开压缩文件以读取. o$ O. Y2 o# Y  w  K: @

) }$ a. r% {( n8 mLZSeek
! ?. l: w1 Z" j2 Y; ~查找压缩文件中的一个位置) B4 G6 U; R2 T8 A

% i1 H5 i7 @5 G4 i$ T2 \LZRead
* s" f( K9 Q7 `5 w读一个压缩文件
) x5 \1 }5 U/ P2 X( ^6 J0 ]
' X: n, B! R$ ^, d6 ILZClose
  b2 D  ?0 S2 T, E0 r关闭一个压缩文件
5 }! Z1 y& U. j3 p( }& h4 ^( [5 u5 ^
LZCopy
8 G3 _+ S4 F0 q+ H: ^$ W/ H复制压缩文件并在处理过程中展开
* j3 E7 t0 \& S) Z+ d) E( W) g! e& W/ k) Z/ J
GetExpandedName
* M9 z( P9 F7 y4 Y1 u/ m3 n3 v# f$ K# [从压缩文件中返回文件名称。
3 z9 y: w3 [& i6 V5 L; ~1 }" z5 H0 A2 B* ?: ~
以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。
  R4 e) Q3 u( L* [. E! m' v5 W; L6 G6 c$ w; M/ a4 U4 }
1 f$ ], }5 N# ^  r
文件内核对象0 A6 B4 Q- \' `# ^/ @  G
  _# f* s9 c) n% ?& S
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。6 o/ w# w# S& o* A9 u0 @, m/ h

, g! f& H- W1 E7 G" o: `2 [9 }CreateFileMapping % l/ v8 s7 \/ g% R  M2 x) G! C
创建和命名映射4 k% Q, R2 K- z1 t3 a% A6 ^
: y8 W9 ?0 C- K  Z+ j% W5 P
MapViewOfFile 5 M7 j! q$ @7 p2 o. Z* B7 |2 }3 p" R
把文件映射装载如内存! {1 ^& r* V; n  n
% ]* r% _) y3 {
UnmapViewOfFile , T8 e  i& [0 T7 C/ P
释放视图并把变化写回文件
0 C" w' a' r4 |4 }( d1 M- i5 @& D4 d/ B
FlushViewOfFile
1 H- ]% m! @! g$ j  ~将视图的变化刷新写入磁盘( \) b- H- D+ \+ I$ l

, o9 O" v1 ?! O2 X0 s/ R希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-2 11:46 , Processed in 0.021707 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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