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

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

[复制链接]
发表于 2004-4-26 20:30:38 | 显示全部楼层 |阅读模式
文件操作 API 函数介绍4 `5 ~5 \7 J" I0 X( [9 ]
9 @: q% {0 U. R7 e8 F/ h  p) O

, j1 v" N0 ]$ D9 S; m" G7 ~, b% a作者:zhanglc( K+ p. s* }, F( E
9 e7 H: y- h" g/ T7 K' G5 x  C
; v1 d9 C! D% Z+ S0 o
    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍:3 R$ ^! _, k2 K/ K' f
9 w( t4 X( r+ e: x
一般文件操作 API
( T8 U  V& Q7 N: Y/ T1 P! x0 [+ ^
8 u! s% L! {$ U; H: i+ r0 SCreateFile
# v  G+ J2 B6 M8 {9 [) A打开文件/ w6 w; B; `7 q, ~& P: k" o( G6 @
要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。
/ ?, B0 ?# ^- L7 @& b; F% ?4 H+ E# n
0 `- l  w( [/ Y6 O+ b- OReadFile% x' D: q/ P7 E" [1 ~
从文件中读取字节信息。
  q0 e* V* M! W在打开文件获得了文件句柄之后,则可以通过该函数读取数据。: Z# W+ w  E, Y# |

: K0 S# L7 A' e5 G! }: _& ?# f, oWriteFile # ?1 Y1 c( q1 u- J+ T4 U0 u
向文件写入字节信息。
/ h5 [* |* T' n$ M同样可以将文件句柄传给该函数,从而实现对文件数据的写入。$ H& g0 V  ^8 i9 Z: f2 b, ?

) j/ Q: @9 `6 P8 U4 iCloseHandle
, Q, Y$ ~9 `2 l9 F+ H关闭文件句柄。
3 i) _: i% r% A' @; y打开门之后,自然要记得关上。
# L& j5 ^. t2 e' E1 Q0 ^. m7 T; v/ e# \: c0 e6 c9 h  s
GetFileTime . n6 F3 N& E' h; B- Q& ^$ g3 m
获取文件时间。 1 B1 T* q5 |% W( U
有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。 * @& x0 x" E) B  x
该函数同样需要文件句柄作为入口参数。: ]" a# p; N; j8 z

, m! w' J- J3 p0 [6 HGetFileSize # t: O7 Z! s, }% p
获取文件大小。   G+ U2 [; A; I9 b0 U
由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。
7 Z5 j  ]# z* {3 u+ D该函数同样需要文件句柄作为入口参数。+ X7 L4 F" U7 L8 e: c( E/ m8 A5 @

! Z& u. Q/ h: XGetFileAttributes 0 R/ Z2 i4 W. u# j, |0 i* n
获取文件属性。
/ [- f$ q, Y! I: x3 Y7 I可以获取文件的存档、只读、系统、隐藏等属性。
# @9 u1 m/ z$ C0 ]该函数只需一个文件路径作为参数。( G7 d6 b- p3 f9 K& Y4 w% n
, S# M' g2 ~+ t
SetFileAttributes 3 [! Y; L2 r# W( U' g
设置文件属性。 3 C! `/ {% b$ e% b0 ~
能获取,自然也应该能设置。
+ ~$ L* H( I! u4 u可以设置文件的存档、只读、系统、隐藏等属性。 $ x5 K- `: x& O. Z
该函数只需一个文件路径作为参数。
. |: ?( c% q0 x( p1 D, Z8 s& I5 R3 {1 t; c  n# k8 y& K
GetFileInformationByHandle ( U) G1 s$ s  c! Z/ {, Q% j  h
获取所有文件信息 ( i1 ~% x) H$ A. ^. \
该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。 + d+ t9 T# U! v9 N. m
该函数需要文件句柄作为入口参数。. m, Y9 ?4 U1 H/ n) U* D3 \

& N% T2 y" w: V* N- MGetFullPathName   _3 a% C. J8 [% H- s! m% {
获取文件路径,该函数获取文件的完整路径名。
$ U; u$ y7 g  Q& X* p需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。: e% l! a; z& ~4 u$ ^/ }! _
! h6 v6 q  x5 U! a
CopyFile 9 |5 }- z% E; i1 Q0 @; W
复制文件 ( k. Q" e3 L+ g0 V
注意:只能复制文件,而不能复制目录7 l4 l& c( {& `, M7 |$ V* N
; @+ S. l0 \: @+ O8 v
MoveFileEx ' k4 `/ T' g+ ?( C% P- _
移动文件 : `/ i% K# B3 f& Z' i) E6 D
既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)
1 H; I1 J3 s2 x" K
8 q5 K$ Z# J( rDeleteFile
% I! b* \- i* G4 R* o, j删除文件1 h0 |0 K* X% G* S: p

" H' w; J$ K/ j3 y$ J  `% ?GetTempPath
; {' H7 i7 g3 V$ @: q获取Windows临时目录路径, g6 J6 x0 w. [# J

: E' O! O/ ?7 i$ C- }5 |GetTempFileName ) \  z# l# l! M+ d  E) f% B! g
在Windows临时目录路径下创建一个唯一的临时文件) _/ {8 ^9 |) @3 R- [  K

" K5 h9 x$ e  w4 N& m# d9 _: QSetFilePoint - j" @9 s. d! p6 t% ]1 O8 _
移动文件指针。
0 w' C' t% \) ^( T" b该函数用于对文件进行高级读写操作时。
+ V- u9 q# t$ `; F" |! u% a- F0 q# t1 R; J1 r; e, w
: K3 c- J" S9 z6 M7 M8 S
文件的锁定和解锁# _$ ~- ?1 j# D! {& W" F4 t

$ n+ ]' w# t" R, a  v2 i5 |1 }LockFile " R% [. K& v6 X/ N& J
UnlockFile
- ]2 M* J" `7 {4 Z  F4 eLockFileEx 9 O1 n" W" N5 v3 F+ t
UnlockFileEx
% C+ F/ K3 i  i7 P6 m# K  E% _5 G$ I
以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。
) {, _) j8 i* ^, X5 A
$ F5 ^2 u) A7 v- @ 文件的压缩和解压缩
! T$ R; R8 L# Y  x; }0 G9 E- V# K8 J: s. U$ a! {
LZOpenFile
  v# Z9 {& k4 G  D# Q打开压缩文件以读取
& B7 a  C2 O8 ?( `4 d
+ l" t# ?1 R. n7 G" c3 d9 u. \LZSeek
, S6 ^6 M$ b: K* y2 M1 y查找压缩文件中的一个位置2 B; @; }+ A2 i
$ {" h& X/ F! ^8 a- {, @9 Q
LZRead
) h& ^- R" M. e- t4 F' B读一个压缩文件. Z+ ?! R1 p' K# X, N+ |. P

+ t8 b/ V' {4 T, W8 w$ R' HLZClose # n1 i% a, ]; i% T8 Z0 z
关闭一个压缩文件- y9 L6 j3 k& @8 e

) f2 f0 T( m  A: E6 B( y, SLZCopy
( r! g8 s. f) O0 M+ a复制压缩文件并在处理过程中展开
6 o- H  _8 w; {  w9 o: q0 p/ q/ @+ j" P$ C
GetExpandedName , q' l! ?: s! ]; O" x9 \, B
从压缩文件中返回文件名称。
& M% @* o5 h/ u1 ~( i* i$ Z4 k
+ a' _( P# t# m( O  s6 `' g! x以上六个函数为32位 API 中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令 compress 创建。5 L7 ~' k& p( ]. ^* N
  Q; R( j) Y7 L

( {" B9 T2 a  X% }5 s 文件内核对象/ c7 z) F- z4 v  B  O
6 t# u- J/ |( R* e! h; P
    32位 API 提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。
0 e# x0 ^- h2 }( s) ?( {) [1 C$ h! x7 E
CreateFileMapping 7 E" |5 S  z; |
创建和命名映射9 ]3 ]: r1 N" {5 f' V& ^
$ r; }3 I' r, a" _  t
MapViewOfFile 2 H; [! g+ ^4 a+ J
把文件映射装载如内存; G' K5 D1 f1 a3 N. X, U1 B

0 q+ b6 x3 A! r% e1 F! WUnmapViewOfFile 3 r: d! |5 m: C% q6 ?. v
释放视图并把变化写回文件- v0 d  u3 v7 i8 Q1 @
& e8 o7 }  m( Y) B& s
FlushViewOfFile - t( s% a2 f2 }) Y, [6 h0 l
将视图的变化刷新写入磁盘2 q5 C& j- j" ]" j5 J

, `/ _0 p- I, v0 e+ L希望通过以上几个常用的 API 函数,能快速的提高文件操作过程函数的编写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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