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

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

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍
' f  x% Y/ Q4 `% `! N. ?  D8 d& a2 ~- E3 [" V! Q

* B' b& _/ K# n7 ~) z# m* B; Q4 _作者:zhanglc6 ]6 s0 M3 q: d& {  I, s

; X  ?' J/ Z6 w/ ^8 l# E' p7 Q& l7 V3 E, M1 P1 a7 N" g( f
    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:& ?4 T8 d( m3 ^2 o4 F/ e
; h+ S2 v3 e0 {6 g
一般文件操作 API% w! d* e. _  s  Z
) a  w: ~9 g( G8 i
CreateFile
6 t3 y$ c, ?7 L% A( y! T打开文件
' I6 E. o! r" d6 {9 S要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。
" b4 o; m7 ^; O) G: Q2 Q" n& V/ @9 h
ReadFile5 p' ]* b! G0 G2 \+ t! ]/ }
从文件中读取字节信息。 # V2 ~& _' D! ]( y: V
在打开文件获得了文件句柄之后,则可以通过该函数读取数据。( q5 r1 E3 ?! N

! r' m9 {' F1 y: vWriteFile 2 }. F1 m& L. `6 v0 e# a
向文件写入字节信息。
! C, Y9 R' M- f1 @) t; k* t* l, w同样可以将文件句柄传给该函数,从而实现对文件数据的写入。
- D0 p$ d; J! H) u( U; I
4 L# u- }. ?+ U* D" ^CloseHandle
! F; D+ y( v" X) @- [$ I关闭文件句柄。
- I* W5 ?0 @. [2 ~- E打开门之后,自然要记得关上。
* C8 Y& {  S" ^( B) Z7 [7 n. R* A! S* q
GetFileTime
8 a# k6 Z  k; B0 z. @) C- m获取文件时间。
6 C5 H0 B+ n' |( B0 b' ~有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。
$ c- y4 p% A: l该函数同样需要文件句柄作为入口参数。8 O! @& R7 z% A9 e' ?" \" [# x+ ^

/ i. u. ?) `+ b( m1 r- xGetFileSize 0 F7 E" }( i8 X3 f
获取文件大小。   e) |  U  W3 l1 ~$ t- V8 G; H
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。
. K/ W" r, R4 C! Z# x3 C* V  A该函数同样需要文件句柄作为入口参数。
0 S8 Z# ?+ i$ ]3 ?8 k" P9 M" L2 X
GetFileAttributes
1 S' N" U! X7 S获取文件属性。 5 n; o( x$ V/ D. L" \, ]& ^9 G& }
可以获取文件的存档、只读、系统、隐藏等属性。
3 A( ^" `: x7 m; Q7 ?; H$ T该函数只需一个文件路径作为参数。
7 K4 |! h! w) I4 t1 U9 e" \% i
* g* I+ q/ x  N: O  S2 nSetFileAttributes   N) F7 @2 B1 z5 j7 ~4 G- W
设置文件属性。 + a$ o3 ]2 `( S2 g( x# I3 U/ |4 p
能获取,自然也应该能设置。 4 j6 Z4 J' V5 m% k0 Q& t; U
可以设置文件的存档、只读、系统、隐藏等属性。 4 Y# Z7 @$ W. B7 f. n& X" Z% r
该函数只需一个文件路径作为参数。& U: `" ]5 ?  ]6 \" f- T' a3 }" H0 z

! @* h6 h/ E" P( b  b5 OGetFileInformationByHandle . d" A8 m# T# H
获取所有文件信息
  g; B: c$ g- x+ ?# y7 |) L  f; Y该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。
6 F2 H  i( O. q8 |; Q" B2 k  m该函数需要文件句柄作为入口参数。
: P& d$ Y) w' q- ?; X: P- R* {: I6 V4 {- g: ?/ c
GetFullPathName
6 |! l2 M  {1 ~9 f5 V获取文件路径,该函数获取文件的完整路径名。
/ L; r" q# u$ ?% r需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。4 q! J3 {# I* a  r2 C2 v+ w

0 w7 o4 [( A/ r0 f$ K+ n, XCopyFile 6 N" c6 P6 c( H7 g: ~
复制文件 ; f( D* N  a/ V* V) R; ?% c2 V; z
注意:只能复制文件,而不能复制目录" g" O. ?. O2 H+ R8 R9 @% ]
7 [9 ]8 w5 F) |0 f0 K% s0 H  R( k
MoveFileEx ! Z/ R/ Y5 w' v1 ~9 G, }
移动文件
3 }6 i4 v+ G2 N, S+ X既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)
- u2 c# P/ v& E7 d: q" u7 c, A# h
DeleteFile 6 R. [) s+ k) d
删除文件
; G! S0 q. s' F- I- r$ z+ d$ F$ r# g- n% \" j; q
GetTempPath
9 h; X9 d. n8 M5 _/ S获取Windows临时目录路径
* `5 O  V2 r6 b9 M  [4 M2 e" B/ f: @) q% o' W! M7 t0 G1 k$ y
GetTempFileName
" J" t! ]) ~9 t5 v在Windows临时目录路径下创建一个唯一的临时文件
$ e1 u( z% G5 c4 g& K4 r9 _) A6 f
8 B5 A8 y' w; b/ T9 X+ B  T* F5 pSetFilePoint
! e) m- K- O; B7 \. ]* _% M移动文件指针。 2 K6 B3 q0 k  N. U$ L, [
该函数用于对文件进行高级读写操作时。% ^, V3 f1 D% v5 Z& U& S; B/ d# B
8 L/ G3 F- V& J7 ]
* [/ o) T. X( y) a; a
文件的锁定和解锁- k2 Y! C) I0 D8 J0 _# @' w

& v5 j9 |: M" q4 H( U# ~1 T3 cLockFile
  l: l6 J5 P& b) H" U- bUnlockFile
  h# F" u# V( m$ }# o0 t: HLockFileEx
5 g' w' X5 Y9 Y' L' A4 F1 u, SUnlockFileEx
# t3 ?! I3 D; p8 q! M) F+ o8 h8 a/ Y9 E. V/ B. o+ Y. [
以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。: i' }7 F3 R( i* @/ a" Y* y% E& T

' `' Z6 k5 I! P 文件的压缩和解压缩, q6 l( U( J$ C' G
+ R6 M* x, k6 K
LZOpenFile & Z- q$ S+ u. K: D# ], s0 U
打开压缩文件以读取
" x2 I) j! i  Q+ X
3 z) i, [, L6 h( w/ Y- W; r' V& jLZSeek ) U: I4 r! e. s0 ~
查找压缩文件中的一个位置' L5 V9 y& V7 R( k
; j: X4 a( S  T# u
LZRead # T( u6 i, U. l" a8 ^3 ~
读一个压缩文件
1 \3 }$ ?# }. `) \: x" ]5 e& Y/ f3 Z3 v- i  \0 v0 n
LZClose % u6 ^1 s: s( O% s8 Z
关闭一个压缩文件
4 n0 ]8 a/ h+ P; U; B5 B0 r9 z5 L- @8 U% l+ f
LZCopy % D5 n$ Z9 S# u; H% \, y
复制压缩文件并在处理过程中展开; }1 a/ p9 y* }9 i; Z

2 P/ x* ~! J# h) C% L& fGetExpandedName
" B2 \  W5 u- T5 q. v" i从压缩文件中返回文件名称。
! M. @" K' s+ {1 g: E3 l
- M2 O- U3 C6 q' Q% A; ?以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。
1 |7 m" Z6 a8 m* P& t9 m9 p
0 _- M! D0 Y' J0 |4 a* Q( {3 D! L! Z' R) \* W( t! r% j4 p
文件内核对象# R5 c* I/ d4 q& V! x0 |: C
! M3 ?& D1 \$ ~+ Z& \$ `6 A7 K
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。
' X  [* [2 ]. B; C; g& N2 z
1 ^/ _0 _. I, g- ?; L- UCreateFileMapping , R  ^: \, q  `7 g: E
创建和命名映射
& V* f( U' O7 w+ \3 w  g; y$ `
& q# S. m# L% z0 Z' M9 R. VMapViewOfFile
2 n0 s$ ], X: k; x. }0 N' G把文件映射装载如内存
/ f1 u- @6 @, i  V8 w
1 ?' M4 _3 |* e# o% C2 j" R- {UnmapViewOfFile : Q' K  o6 B* n2 n7 h
释放视图并把变化写回文件
; ~& @/ D/ O1 `7 |" J, [: Y+ K3 ~, V5 v: T
FlushViewOfFile : s7 R% x# s* [& l- B1 Q/ o$ U
将视图的变化刷新写入磁盘' X4 ?, {" B% |# S; b7 a

7 x- o! u7 U) j8 h希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-30 00:40 , Processed in 0.019457 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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