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

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

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍- i/ B" d* X9 I! ^7 b1 M/ s& z
" ]% p- {) B% |6 _

- m# D; K1 @% n+ l  a4 ?! M1 N- X作者:zhanglc
: i! w# K* Y4 c: I
. j: t! _/ E3 @) k3 ?
1 P/ N7 G# g3 _3 I' P! f  J    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:" P/ Q7 U( z# N0 ~6 T# u3 k4 F. B; {

' h2 n! P* g# B9 ]7 s 一般文件操作 API
+ [3 c6 t( z: [" k5 q2 ~) Y. b2 Z6 i; i
CreateFile
5 E5 k# C) u- s打开文件
+ ^$ [  ^; O% x  Y8 H3 M要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。
6 m4 E5 E; Q( p) {* u3 ]6 |
9 c- r! u2 a" |& ^7 [( C( q  NReadFile! q: _, S+ q  }
从文件中读取字节信息。 1 o* A6 i' f# C% G2 O5 q
在打开文件获得了文件句柄之后,则可以通过该函数读取数据。$ p% z7 m0 k9 b) |' q* M

0 s0 p% T8 |4 rWriteFile
5 F4 h% u5 E( C" f  U: z向文件写入字节信息。 8 G3 B0 Z9 z; r! w, [/ `' E
同样可以将文件句柄传给该函数,从而实现对文件数据的写入。
+ [9 v: Y6 Y2 L* M
7 v& v- m, K7 `$ f# U( |CloseHandle
- N5 v9 n. Y. p4 ]4 e* K) J关闭文件句柄。
5 q7 O5 g% L  @* x; Z( `打开门之后,自然要记得关上。
5 c; s5 a* G- h
) ~: q2 w- d( V( v) Z$ @GetFileTime ( F9 Y: Q# l; J5 ?; F) R8 \
获取文件时间。   k6 A9 T' z7 A: `6 g/ _
有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。
+ D" \& x; `2 T$ V8 l该函数同样需要文件句柄作为入口参数。
+ G' y! ^3 Q; e( O: e5 r/ ~: E1 D' [( b& f
GetFileSize
$ ?" T  Y0 t6 V8 P6 x! H  O获取文件大小。
  ^1 n- h" D4 }% y2 E& L* D由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。 , `  S6 [+ X; b3 o! d  ?
该函数同样需要文件句柄作为入口参数。
; D) Z) Q/ c1 o& i9 V% ?( k$ Y% ?4 N! ?, L9 M5 O
GetFileAttributes " H9 |+ m, h9 Y
获取文件属性。 9 Q' Q0 F) x0 }" Z& c3 v8 J: Q
可以获取文件的存档、只读、系统、隐藏等属性。 % l( f5 p0 H7 t- Y; j& Z
该函数只需一个文件路径作为参数。% o8 c- Q, W" _+ o. E
' r+ M* \! Z, f1 p
SetFileAttributes
  o, J# j" [. B+ ?$ X+ v5 I设置文件属性。 3 {! ?( t7 d1 V- `  z
能获取,自然也应该能设置。 $ H, U+ G7 g3 V0 G& }6 t( M  P
可以设置文件的存档、只读、系统、隐藏等属性。
! X) A! r  `9 K9 e" K# q/ K该函数只需一个文件路径作为参数。
2 N8 ~  l, ?9 b' K
4 Z# V+ E+ ~5 o) D0 V( t$ ?9 nGetFileInformationByHandle
8 G- Q' U  X- u& Y获取所有文件信息 & D7 A5 I7 p% ]; r% E- S* Q
该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。
; s: A( C+ \% M' n# s' A该函数需要文件句柄作为入口参数。7 v0 b+ s) z, ]

. V( n* y/ Q  Z; G- S2 Y1 Q3 ]+ dGetFullPathName + d7 v% K# S5 |) P; @
获取文件路径,该函数获取文件的完整路径名。' j/ `+ M7 W- K
需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。( U' R! B' y4 F2 ~
! M9 R' G: o$ o' r
CopyFile
  z* \: }0 ?) |* F/ v9 h复制文件
' }* V$ [& u  \+ G+ l0 a注意:只能复制文件,而不能复制目录  P+ f0 E* x/ [6 r: Y+ }! \

' J- F# b) N" r2 R% S4 O+ Z/ w! CMoveFileEx
8 V) t! u& F( o8 |+ S2 V' A% @9 ^移动文件 ! l3 B/ Q8 a0 J: B' ~- R4 m( l. v
既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)
% x* G5 }4 N- K, C* X7 ~0 k2 O1 I4 F& s
DeleteFile # G, W7 q4 T9 P
删除文件
: }0 _. j4 h2 g1 l
6 q, B' V+ V! E" ]GetTempPath
* o3 h$ u5 q4 A8 a获取Windows临时目录路径6 w2 X8 n5 X0 H/ x$ y5 Y# a" ~
/ c8 e( \7 G" W3 O
GetTempFileName
5 }% E" C" h4 w4 R. s在Windows临时目录路径下创建一个唯一的临时文件8 s& Y' I# a* D" Y  c
' J+ N; T. t2 \) _
SetFilePoint + C* Y& Q, w# }" R9 M
移动文件指针。 2 t. @/ W! B6 H, O; Y4 n& L
该函数用于对文件进行高级读写操作时。
: C9 s3 H7 B7 [8 Z6 H" M! Q, R4 U  U6 h1 ]

8 Z! \( }+ k" E6 |* w6 b5 b9 Q 文件的锁定和解锁
$ |/ [+ `( s7 A6 F0 ]
" V4 q  d9 ?8 h0 B9 E+ R1 c& QLockFile   o8 v6 T# Q$ \( u9 ?
UnlockFile . {- r8 r# M2 ?
LockFileEx
$ d# C# z  x. z3 v  L1 C% k  ZUnlockFileEx
/ H' v! J7 {" \: d/ ?# M1 m* [+ i4 t
# G) |9 e# J9 t3 W; d" y; F3 o$ d以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。
: u( R  ?5 v1 W3 H# s* y4 K7 y9 j9 S8 P3 ?$ z
文件的压缩和解压缩
* I. h$ }: m/ p7 f5 s  D* y3 X3 W
LZOpenFile # z' T4 D, Y# ~- ^+ T* `4 e9 m0 U
打开压缩文件以读取. Z3 J. X7 i6 l% O: M
2 |: w" ^% @" t. y
LZSeek 0 C9 M! F, X2 [
查找压缩文件中的一个位置
( N5 x7 o$ E9 K1 N/ R1 f0 j
2 B( U4 D; m! x% R) F" V0 {: qLZRead ) _! T6 k- B2 m5 m! a. C7 p
读一个压缩文件
$ S. D  G9 u% q8 ]& L8 V7 `+ l* E
8 k" }( H  m0 {3 p+ O& |8 @% CLZClose 5 w! }! x  ^2 T9 A0 O* [# B2 j% g
关闭一个压缩文件
' u0 ^( D9 ^- f/ {1 w$ E' U, {6 H/ ~
LZCopy # l8 a" F$ ^2 c3 {% O) L
复制压缩文件并在处理过程中展开
7 t- J7 x( Y' p
& ]- P1 a" [" ~  @GetExpandedName   b# g6 n# W$ e: [, F
从压缩文件中返回文件名称。
+ t) m( F* R# S6 C2 L, `: j5 n  |2 v( _8 H7 n6 Q
以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。
* `* w5 x7 ^6 o4 V$ ^- F( C9 G
. B# E' E- ^) c- c) G; G
" v1 u, h' U/ u1 y; V: M: I 文件内核对象
5 `  O7 S7 N) w) R% x: n' \3 T! t) ]. @4 d2 v/ f2 L) \2 B' }
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。4 A% M4 ]  l1 ~7 x" E! R2 R9 @& D

4 Q9 \8 A0 I4 xCreateFileMapping
8 B  b3 @3 o+ z/ ~  t0 {创建和命名映射: @8 S+ x8 g- U
0 ~6 H9 E/ X$ C0 Z$ H
MapViewOfFile 8 }% M  s6 [. ~$ ~
把文件映射装载如内存6 ?! W9 B# ^/ c- m2 \8 ^

- j) f& r" k' nUnmapViewOfFile
8 Z: O- N: G  E& t* G释放视图并把变化写回文件
. Z) p( l9 a; u" D
! E$ L" Q  [5 E: X+ q6 [+ U6 ZFlushViewOfFile
7 ]& {/ U$ U  y; V将视图的变化刷新写入磁盘
/ |% p# u) Z3 b
( ]% f& e' P* T, x. u希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-18 11:02 , Processed in 0.018115 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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