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

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

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍
, G# m$ n; q0 R# u4 F
6 v; o3 }: S+ V$ C1 d9 s/ S7 J: _; I2 q$ b: I# v% |; N3 P. F( H
作者:zhanglc  P) y& h" B- c7 D$ P

" N% \$ x- _# s; [! q4 \- K# E+ B1 c0 g' g$ a$ {5 J
    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:
2 b, T# A' j1 J* I: U
( c3 N- C, `1 j  n 一般文件操作 API  _6 Z' h( b+ w: G1 S& `

/ Q  W, a7 ~4 z, V* Y5 x: S" \CreateFile/ z  d( \) @$ }; [# y0 `
打开文件4 [, H' X4 l. H% s3 L
要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。. m5 s% w; {! v3 y3 B( j6 _) i

! x7 O8 P* k  r0 P1 cReadFile
3 f5 E# ]: K! b0 l2 E' |从文件中读取字节信息。   ?! o; F; b  t
在打开文件获得了文件句柄之后,则可以通过该函数读取数据。
3 q! j3 Z' E' m# m" f: @0 ?: ~! }$ L: f4 ^: L' W: t0 C0 m* i- H
WriteFile ' [; t3 D) r/ \
向文件写入字节信息。 ; b8 l7 L4 v2 F$ n/ M
同样可以将文件句柄传给该函数,从而实现对文件数据的写入。' `2 W. C8 D9 m! I6 c+ b# M

+ A4 n* F  x7 C) @8 B- lCloseHandle
) a/ s9 b0 @: r" |) [5 e关闭文件句柄。 + x  u9 F5 Q5 I3 P3 Q( j4 V
打开门之后,自然要记得关上。
& x1 N/ @9 m& z) x$ [9 m+ k) J' N5 a. p9 D+ g0 E3 T
GetFileTime 8 W0 F- n0 a" U# G- N+ P! [8 H
获取文件时间。
/ n: f& l8 r( ?( f有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。
0 V# B/ q/ y4 A0 ~. }该函数同样需要文件句柄作为入口参数。* {# Z/ |6 M+ Y: P* h
2 p1 b$ b- E/ R$ N$ U7 l- }
GetFileSize ! [6 M0 v0 y0 Z
获取文件大小。 5 q$ A: V- j" U4 C9 Z9 l: H
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。
' v" w- Z! i3 ^$ |( O, `$ h该函数同样需要文件句柄作为入口参数。
" d" h& e3 P, Y: S1 ~# f5 q: n4 a# T
GetFileAttributes
$ S( b; s' o: ]- l( n获取文件属性。
5 P1 n* h8 o. L+ x可以获取文件的存档、只读、系统、隐藏等属性。 . X! o" z( B6 P# ^. b* m9 @# E. L1 |
该函数只需一个文件路径作为参数。
0 j+ z# I( }/ Q
1 ]( M7 ]8 t" c9 e& ?- {2 kSetFileAttributes ) x( j/ O; ?6 S0 ]. L
设置文件属性。 ' Y" \1 B" O/ M7 |
能获取,自然也应该能设置。
( o; ^* z' s$ q. }0 J9 y3 x5 ~$ o可以设置文件的存档、只读、系统、隐藏等属性。 6 B' D/ b% n0 M
该函数只需一个文件路径作为参数。
4 ?: K4 S& Z1 }3 e" Y. ?. D! j5 S* f% B& n& l' k
GetFileInformationByHandle ' w* y! C3 {& J( i3 J
获取所有文件信息
( P. W' R8 o" C; h( g9 E该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。
0 w1 P+ z1 \  F# K, u. t该函数需要文件句柄作为入口参数。  M5 ]6 O' _! D+ @* R* J+ W9 E

; _0 m) O6 M! t  [. L6 aGetFullPathName $ b- q/ t+ r) j
获取文件路径,该函数获取文件的完整路径名。
. j* _& x( z& I4 I( D需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。0 x5 e9 B1 N7 i( e8 I2 L; X1 U6 k

" O- _# p3 b, D0 t7 b+ k6 wCopyFile ! U0 k# q5 q+ s0 n
复制文件   c" I3 i, _) O4 E; Z, ^
注意:只能复制文件,而不能复制目录
7 T9 v1 R# H/ V+ g+ M: X5 K  b2 t) R  s. D! u4 k- _( n
MoveFileEx
, u$ M" S: k: F# L移动文件
0 W5 t. @3 D- _# W/ k/ v  ^既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)/ z8 `( ]- z! M4 N" [
5 C5 F+ m( A5 U) {3 E* W7 x
DeleteFile
" s/ H- T+ A$ f( e$ O5 t+ m删除文件' F% p  M: ~# }: S

' ~' d: [( T; K; y* c  bGetTempPath $ g8 s. H4 u! a( N  j1 W
获取Windows临时目录路径
0 U& l& Q$ R- r  V* ?$ ~+ Y5 r* ~. [# _
GetTempFileName
( W% t4 |; L1 g5 @! [$ L在Windows临时目录路径下创建一个唯一的临时文件9 u- _% B: e0 s# D, a2 P
" `! u: z! ~3 f9 z' h
SetFilePoint
5 @* y% D) Y, V& i# m移动文件指针。
/ d) T8 o' y! v% K& m2 f' I5 i该函数用于对文件进行高级读写操作时。# ~2 ^, T& R6 u+ o: W' V! ^$ @  u

; M0 I$ W+ Y% I: E! g4 t) T3 e
, w! m% X1 t; z* X% D0 i- J3 O 文件的锁定和解锁3 Y/ ^$ z+ q# B7 O  Q- L5 w. h& T

) l, v- }7 ^& G; zLockFile / h0 I6 F' f: ^
UnlockFile + q: a# B1 l- m8 h! k$ ^
LockFileEx
1 M( ~( ^% q/ t8 S2 m( c2 CUnlockFileEx & s' J0 z  b/ W# E: D( G5 b7 V- _
2 g( r0 R: m  E
以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。
& j1 ~  ~4 O6 D6 S9 u' }. I) S0 q2 T
文件的压缩和解压缩8 w) P% u# z. B& K+ w
: t, g& a  w$ d& t$ _
LZOpenFile / b/ r" f- T  C9 r6 A
打开压缩文件以读取
5 k5 b* J  M# A
0 j# X6 L2 e& J+ P1 t" jLZSeek
1 V5 C" y2 w! L$ B查找压缩文件中的一个位置; O4 u6 b2 y- C4 C! W& A7 v1 c- ]
0 b4 B  q: s1 K
LZRead 1 o5 N4 w3 ?8 h7 v9 T- i( S# C! S
读一个压缩文件, C6 q0 T4 v% R3 V' e) o
7 y5 n% h. O# U  h' P; b( \
LZClose
9 W. n( u8 }0 @1 P. d* v关闭一个压缩文件& Q6 t7 Y6 {+ A

# ^" o4 b* F6 `( ~/ K1 y0 [LZCopy 7 E' o, E. P3 B, e
复制压缩文件并在处理过程中展开7 I3 q& K) f7 ^( \$ i7 I' \

& m* i# f( n$ O  Q. ~0 oGetExpandedName
1 N+ Z; ~6 T7 ?- m2 ]6 y# i从压缩文件中返回文件名称。
1 C% @1 P3 X0 A$ ~1 F
' i3 ?; ^: o& f3 V以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。3 v* Z+ e! B+ `* T1 d# }" L
# l/ _$ g/ K& l1 q  I

" L/ ]9 ^! z* E# _/ V. D 文件内核对象/ k8 X' L4 B* H# T5 F, B
; u! k1 `% B" n8 z' n; D& @4 u
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。( g* A7 f6 P. p+ h& B

* ?$ g% k# Q& sCreateFileMapping 0 ?$ j* R5 P% ~3 V1 L" X, D) E
创建和命名映射
# k8 Y! z% J! r+ M; o1 U8 e! @* i# ?- b  T: K
MapViewOfFile ; f. G2 g: Q6 _
把文件映射装载如内存
: N/ P; v8 q6 q+ q+ V+ y; _4 M6 N4 h* f, n# }6 q: y, v
UnmapViewOfFile ( g% ?* ^$ x- I! }3 b' ^3 C/ d/ E  O1 f
释放视图并把变化写回文件
; w8 {% J* F0 w) {2 s7 ]5 l0 b1 g* X7 g2 |- v
FlushViewOfFile , f5 ?5 x' k3 z9 E3 @
将视图的变化刷新写入磁盘
$ d! o; {1 c0 a/ E. C/ R
. h. x: @% S* F/ ]$ y6 i希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-14 16:30 , Processed in 0.016580 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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