冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】C# 文件操作代码 [打印本页]

作者: shane007    时间: 2009-4-11 22:09
标题: 【汉化资料】C# 文件操作代码
c#写文件
, h: q1 }# F  W. ]. c& O! }4 Q8 \
C#文件处理操作必须先导入命名空间:using System.IO; * ^+ N( s- P2 I
//实现背景:一个文本框、一个按钮、VS2005
" G- A8 N) s' J
/ h, d3 E, m4 g  r方式一:用FileStream/ t8 ~% A) \  A* I. o3 Q
& K4 w5 f5 m. \6 V% Q3 c
//实例化一个保存文件对话框
, x! q/ }: {6 I, l% B! q            SaveFileDialog sf = new SaveFileDialog();( \: S- Z5 T( Z0 Q
            //设置文件保存类型6 v# x6 L; y' u7 P
            sf.Filter = "txt文件|*.txt|所有文件|*.*";/ }; ~4 W; A$ u: l, I4 K
            //如果用户没有输入扩展名,自动追加后缀3 Y& f/ _9 @- R3 e
            sf.AddExtension = true;# g5 T3 \5 U5 ]& P8 e
            //设置标题
+ |8 T6 p8 d: e            sf.Title = "写文件";
9 K' ?$ o) I0 J# }$ R/ Q% E. {' i+ R            //如果用户点击了保存按钮
% B: }& h* |$ e! R+ p) O! }6 E" V            if(sf.ShowDialog()==DialogResult.OK)4 L% O: t5 b/ U' @
            {: t& w" X$ u6 s: N
                //实例化一个文件流--->与写入文件相关联
% E; ^% J  a) B! b) @                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
0 F7 M4 T( H- @( w+ [( M  _                //获得字节数组# L  Y. m. m; W- f+ o; m
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
- i( u2 y6 Q2 x                //开始写入
# f& K. \2 R; P4 m6 m& s; v5 z                fs.Write(data,0,data.Length);
, t6 T7 e5 ?' X/ H! r- `                //清空缓冲区、关闭流9 i6 t7 k2 R9 r* S/ W4 y7 p
                fs.Flush();  r4 H7 H1 A8 |5 R+ q2 }1 ]
                fs.Close();
3 Q7 ~2 N( p/ [" r3 y$ z) o6 P3 @/ Y" z$ G1 h4 O
            }
2 E/ t1 Y  z* e: n' }
- ~- H2 Q  F2 Q, I- }  y3 q方式二:用StreamWriter
3 D" ^. E9 K) B. J  f( B0 ^# w
( s# b; i. f% w9 U+ p//实例化一个保存文件对话框
7 ?. h& R+ P% S( E+ U' G; x            SaveFileDialog sf = new SaveFileDialog();) R* C) w5 A# l8 |- w+ ^- J, w
            //设置文件保存类型4 @0 j8 \( {( c) r# m. P, {: S' O
            sf.Filter = "txt文件|*.txt|所有文件|*.*";" i7 b: [* Y0 p6 m2 z
            //如果用户没有输入扩展名,自动追加后缀
) J8 d# l: K4 J* Y7 X            sf.AddExtension = true;
0 o; E$ Q8 i, k, }- A$ V  C            //设置标题
  B& Q- J& Q! o/ Q% O" U+ p0 |            sf.Title = "写文件";/ v- F3 U5 V( b" i
            //如果用户点击了保存按钮
6 q6 l3 ^: _5 Z9 x" @            if (sf.ShowDialog() == DialogResult.OK)  J! C4 r2 `/ q
            {& f/ [8 r$ j' s8 k6 T: ?
                //实例化一个文件流--->与写入文件相关联
* m5 R' f" U2 X                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
  e( k6 [3 J2 w. X$ k                //实例化一个StreamWriter-->与fs相关联
. q( t+ U  {" l' @) ?# I: S4 F                StreamWriter sw = new StreamWriter(fs);
/ I  s8 H, U1 [* ^2 e* q1 p+ Q                //开始写入
5 i& r0 `# S4 |) Q4 g* v                sw.Write(this.textBox1.Text);
, c* x. S$ u0 d                //清空缓冲区) g: q1 V# v3 Z) [- U
                sw.Flush();7 z& }" q' I* g6 _/ d* Q2 m
                //关闭流
: K' e2 Z5 l8 P* c                sw.Close();
  d" U. v/ s. l                fs.Close();2 A+ u, _/ [  P! w
            }! g" P- e" O% Y5 r6 K0 `# r- ^
9 J4 S. [! W, |( w  c! q  |
方式三:用BinaryWriter
8 T: {7 h8 w1 x% E- k# u5 C+ N6 \
8 h, I% G0 ^4 Q+ I//实例化一个保存文件对话框
0 U& ?) j. u* d( z0 v. C6 w            SaveFileDialog sf = new SaveFileDialog();
0 w; z- Q: I4 e9 x            //设置文件保存类型  a7 u9 Z2 }' t1 Q" O2 I, E
            sf.Filter = "txt文件|*.txt|所有文件|*.*";6 a/ J# u# x) b9 S1 U& ]4 \" A
            //如果用户没有输入扩展名,自动追加后缀
- E+ }/ n/ `. k' M6 D& ~            sf.AddExtension = true;7 ~4 n; T  p7 g) ?- m; U
            //设置标题, @! W) Y9 [7 t2 k! P- x2 f7 m: O
            sf.Title = "写文件";
4 J# @6 x# a0 ?: Z            //如果用户点击了保存按钮
2 a. s3 E" y9 x+ v            if (sf.ShowDialog() == DialogResult.OK)
% P8 M  n  V' g/ i5 J            {; M4 n$ A4 I- C& m5 |% j
                //实例化一个文件流--->与写入文件相关联
- H" j* b- U( m; c. e- x                FileStream fs = new FileStream(sf.FileName, FileMode.Create);# s) O* T3 q# V! E( H
                //实例化BinaryWriter! l3 |6 |- s2 k5 E" q$ |
                BinaryWriter bw = new BinaryWriter(fs);
7 X$ E6 M3 b7 E                bw.Write(this.textBox1.Text);# u4 ?3 M0 g: e5 c
                //清空缓冲区
8 ]6 d* i/ D1 ~9 k8 p4 d  |8 C                bw.Flush();1 H+ w, H; ]0 C. o" \4 T
                //关闭流% ]- ?: r8 A- D# _; [; P: v2 w
                bw.Close();
1 K  J# I( |7 e# u) X. c                fs.Close();
- u; J" V  W  ]/ b& m4 [1 V            }# ^- S% o) G4 I9 b% X

! \3 e3 E4 B/ \9 o$ e+ lC#缓存流示例------>用缓存流复制文件
: v$ g" Q) \8 a4 v% I' q+ s3 g& s" M! N/ o9 _% j- G
C#文件处理操作必须先导入命名空间:using System.IO;' `4 L$ @$ l& A& r0 q; Z/ n" T$ R

8 i: U& J: P- O' W6 J背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
( ~/ L4 e: |4 N+ Z4 J+ y
8 }1 u1 a, e4 @在按钮的Click事件中添加如下代码:/ D% y# O. {0 I. @/ w+ q  U; p
& Y* F: A& w6 `) h* ^; g+ Z. P
private void button1_Click(object sender, EventArgs e)5 ]4 l7 I2 |& A9 r. ~
        {
/ V6 y2 w7 p- ^            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
, H' y5 D5 S" ]' e+ Y+ u0 f6 X            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
% d' i# A( r+ @6 I+ E            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);. n  `$ u  x! ?" n6 y" g( I7 j
            //创建一个字节数组,作为两者之间的媒介
# Z4 y# p( ~9 L8 m8 }! Q            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
8 p+ u! D6 f" J, J( F2 Z            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,/ V, ?9 i9 q. R/ F5 G( K
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
$ x8 Y6 |  [, j  j            byte[] data = new byte[1024];3 M4 {* p. |# P+ N
            //创建两个缓冲流,与两个文件流相关联
  S' k1 Z) x: A            BufferedStream bs = new BufferedStream(fs);
% o# _: ~/ k3 g% |" X* k5 P9 k4 Q            BufferedStream bs2= new BufferedStream(fs2);
' x- W$ y! ^1 P  w4 s3 N( @  \; x  g            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了/ f* Q5 z6 [  z) j8 x% o
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
/ O9 a: T. T7 ]            //即-->那个人没有苹果往篮子里面放了
0 X* I1 {; I. M0 `( }% d. v            while(fs.Read(data,0,data.Length)>0)
9 V8 P5 R; `' {/ m/ ]+ B3 K            {
* C$ c5 S) T$ L' e$ |                fs2.Write(data,0,data.Length);
' u8 y* g% \$ h                fs2.Flush();
0 y  R9 E0 E, f; m( {            }0 I( @1 `4 Q6 t5 Y
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
# X" G" ]* o2 M2 P            fs.Close();
3 c& U' t* R* p( {* L            fs2.Close();1 F  Q# a9 V# P: S0 s  g
        }
6 A' R" `! n$ D7 K! q, G% j
7 o( x8 e3 l& e" q% V& K- \: @  O+ V4 J( L% w2 I! O/ Q% k3 M
C#内存流示例----->用内存流来读取图片. Y9 ^$ R" |1 s
C#文件处理操作必须先导入命名空间:using System.IO;
+ Y& u+ m2 B7 u0 a+ {4 u7 j8 ]9 ~4 {# k( x3 O; I( {% c
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
6 d$ w) B+ T+ f/ S  n2 U& b: U$ W% o4 w5 I3 P+ z" q$ u! l
private void pictureBox1_Click(object sender, EventArgs e)
7 p* x9 p4 y' O3 _! W        {9 w5 ]6 B* @! Z% @: r
            //实例化一个打开文件对话框
3 Y  W3 ?0 j! P            OpenFileDialog op = new OpenFileDialog();0 @, @" T5 y9 E7 r7 z
            //设置文件的类型3 T. y$ D- o' D- U7 V
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";, w: p% h$ s6 @* b/ Z
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:, Z/ V  R# ^, }* n6 A- E. g/ ]
            if(op.ShowDialog()==DialogResult.OK)5 K$ _+ }& e( L+ M
            {  h) e; r2 d8 S$ O" L1 G9 J
                //清空文本0 T4 A# k  a* r6 i% u3 d* _2 D& Z
                this.label1.Text = "";9 O9 \2 K* _, B
                //实例化一个文件流- C  F$ t  }0 p) F: @
                FileStream fs = new FileStream(op.FileName, FileMode.Open);
# s5 }3 m2 a/ F6 g                //把文件读取到字节数组0 Q  m4 b& |' Q+ P; Q/ O
                byte[] data = new byte[fs.Length];* q- K* Y- _/ T  Q$ W- |5 X
                fs.Read(data, 0, data.Length);5 Z; j# A  c* E9 {8 d) T7 B3 t' i
                fs.Close();6 M6 `+ b- t& L% E

, Y% {* \, M8 N4 G$ M                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去$ @; v, C2 ^* _5 z$ r/ w
                MemoryStream ms = new MemoryStream(data);$ v% d# ~$ O. e& @% p3 a
                //设置图片框 pictureBox1中的图片# I% m0 u! k. e. ^7 v4 T# K
                this.pictureBox1.Image = Image.FromStream(ms);
, R$ O6 q5 w6 A, }: n% R" y* |6 x            }
. v8 t6 z6 Z0 m8 Y/ l' ?9 p& x, `8 C( |# z2 [3 W; Y% e. n
        }




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2