- 在线时间
- 0 小时
- 最后登录
- 2004-6-29
- 注册时间
- 2004-4-30
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 241 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 98
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 43
- 主题
- 10
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   97.89% 该用户从未签到
 |
新建一個專案,在窗口Form1上加兩個按鈕,一個OpenDialog1,一個SaveDialog1;: D% ] [: x3 D5 x
//---------------------------------------------------------------------------1 P' E9 ]( z4 q! R1 R# M
& A f; c/ `- y6 z2 b" l8 |% [#include <vcl.h>
( j6 R* F: A2 J$ x0 ~8 O#pragma hdrstop1 |4 [2 }# ~0 P0 b! C/ p+ p
- T; b, j+ n: T' y; \$ Y1 y+ u#include "Unit1.h" e- h3 k+ D" K( o$ W6 q4 j8 c
#include <fstream.h>
0 B: z! i9 ^8 z' ]#include <dir.h>
# {) _( u; E# _6 K#include <sys\stat.h>( t: \5 Y, ?0 N, v+ O% S4 F- b8 B
#include <malloc.h>
8 m: {% V/ R; }& \7 g//---------------------------------------------------------------------------+ w: Z& U( z8 o$ i
#pragma package(smart_init)& y8 Z4 a/ ^& |7 N7 e: Z# Q
#pragma resource "*.dfm"
/ I7 U4 o2 M$ d NTForm1 *Form1;
' i2 b) p, f9 S6 ~6 O0 {0 A+ s$ g unsigned char *BIN_Byte;
: @1 J7 v5 M+ l, h6 V7 ? long BIN_Byte_Len;
/ q7 K" x( u9 ]$ Y, }0 q0 q//---------------------------------------------------------------------------: s4 C* C# \( `, e& `
__fastcall TForm1::TForm1(TComponent* Owner)
9 m3 c" q! q# n9 c- ? : TForm(Owner)
) q3 d# ?5 L! f% ~8 B" O8 _{
' i, g! B" A# _1 i A% B+ j}6 b, h4 \8 Q' s/ J
//---------------------------------------------------------------------------- `8 J, n: F" i
void __fastcall TForm1::Button1Click(TObject *Sender)- D4 E1 ^: Y T8 k
{6 o0 o2 ~7 ~. E+ F$ Y
char sPath[MAXPATH];
6 r, e7 Y% A# q. t' u d struct stat statbuf;
5 B4 y) u' S0 a2 Y+ C FILE *stream;
8 `' m3 T2 v7 W! [* Q" Y
7 I) _6 o4 y5 ~ getcwd(sPath,sizeof(sPath));
0 q. y* t3 h Z; ` H OpenDialog1->InitialDir=sPath;2 F: o/ X2 H- r% Q1 \1 O% F
OpenDialog1->Filter = "BIN_File(*.BIN)|*.BIN|All_File(*.*)|*.*";
' k4 ?! [! @4 i, c# i OpenDialog1->FileName="fileFrom.BIN";
4 ?( o( Z# X3 p2 P if(OpenDialog1->Execute())+ v; A) L$ `9 |" i. b) ^
{
1 g' _& Y. T! f+ a. Z$ v& P strcpy(sPath,OpenDialog1->FileName.c_str());
* t3 d2 ]' e s7 |: C stream=fopen(sPath,"rb");
" H( L# n/ Z% e4 X fstat(fileno(stream),&statbuf);4 g" J3 l# m) u! _3 X- X& d6 @
BIN_Byte_Len=statbuf.st_size;) T& H7 J+ j) a, T; |
BIN_Byte=(unsigned char *)alloca(BIN_Byte_Len);
2 e! `7 l o4 Q& f for(int i=0;i<BIN_Byte_Len;i++)* l/ V" |5 o7 Q. C1 J t
fscanf(stream,"%c",&BIN_Byte); //read file7 h) R8 L& ]; b5 z: j6 E! G( m
fclose(stream);
9 v" O1 X4 J$ c9 S } B& }7 z: E/ u! q- b J, |3 N# x
free(sPath);. G+ r: t7 d* |% u( e: q3 R
free(stream);
2 Z3 K, N7 u$ U5 I}
: V9 Y: { e4 q$ W& `//---------------------------------------------------------------------------4 ?5 ^0 j% }2 A# h) C% z
void __fastcall TForm1::Button2Click(TObject *Sender)
! Z" A/ B% Z& ?. ], N- ?2 r9 ?{% `& O y( S! c. P
char sPath[MAXPATH];% i3 u0 a' A r0 J* P
FILE *stream;* @# }+ v3 Z$ ~; O6 A, z; ~7 t
getcwd(sPath,sizeof(sPath));//App.Path
9 Q3 B6 }) w/ V2 l strcat(sPath,"\\");
+ I6 ? M% s* Y' j2 C9 b7 q# B- w( K' ~ SaveDialog1->InitialDir = sPath;$ ^; C6 t. L% i+ O5 ~9 M" E
SaveDialog1->Filter = "BIN_File(*.BIN)|*.BIN|All_File(*.*)|*.*";# q4 X3 b8 ~5 f; D& [4 d( o! ^% G
SaveDialog1->FileName="fileTo.BIN";6 C4 Y3 L7 _$ f6 J$ H& P
if(SaveDialog1->Execute())* ]% ?- @/ }* m! N: k% ~% o4 N3 b
{, S* B8 U: k- x" e3 O- e+ f+ d8 n
strcpy(sPath , SaveDialog1->FileName.c_str());
) r/ Z6 m% E! \3 y stream=fopen(sPath,"wb");
- }$ ? @9 G4 W9 R! \ for(int i=0;i<BIN_Byte_Len;i++)
/ j" u3 }2 R3 N L3 y! E fprintf(stream,"%c",&BIN_Byte); //save file
5 F6 G# K5 K% U# F! H# Z, R fclose(stream);
' M" q; u; V0 i4 G( n }
! `$ v& Q) ~9 B, e free(sPath);$ f3 a4 X5 @# e1 u" v0 H
free(stream);2 k2 q& n: W/ ?7 ]
} A# Q1 p- b5 X
//---------------------------------------------------------------------------4 R$ y6 \! \9 g# h" k
void __fastcall TForm1::FormDestroy(TObject *Sender)
; N: w3 ~' K" O5 S) g8 I* l{# m$ G: W; W: @$ V8 T; p
free(BIN_Byte);
3 H2 u4 @ J, L1 B J2 x2 y, u j+ i}
% I" V {( q/ X7 h* X! Y8 C( x//---------------------------------------------------------------------------# N8 n% x1 j& J, p& }
0 N7 N7 U( e! b. ^' d. g& S打開一個檔案,再另存為另一個新檔案
' | v5 N# k* k4 a0 l; _# m' O結果兩個檔案內容一樣. J* `/ [# s* ~5 L4 z
順序不一樣了
, T* p$ J' T7 N( I3 Y# b% C* v檔案前面一段內容跑到結尾去了) ^# C: j. m! @5 h5 m
就像下面的情況# d0 H4 i& ?+ R4 x9 c
原來檔案內容:ABCDEFG
: `. s% [# t) c* m. ?& s新檔案內容:CDEFGAB
/ Z* f }. J& Y0 \7 f3 s老大救救小弟哦
0 x& @ _) G; \ G/ S: J7 Y |
zan
|