冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-4-11 22:09
标题: 【汉化资料】C# 文件操作代码
c#写文件
8 i# a3 Z# t7 q; }- y0 D' L7 [- N2 L6 l, W, |3 L! }
C#文件处理操作必须先导入命名空间:using System.IO;
  Z- Z3 ]* q) ]8 I  y9 m9 y; x2 k//实现背景:一个文本框、一个按钮、VS2005
1 E- v: X6 I, f3 t2 f
1 T% O( I, y  `: T; D! }方式一:用FileStream+ q/ d* W8 H" ~0 s+ P

- C6 x/ H4 w3 ?, A# U2 M/ {//实例化一个保存文件对话框
! V$ i( r# q' S8 q7 F; O  i( \5 }            SaveFileDialog sf = new SaveFileDialog();: A7 d. J/ T$ N* T/ v& s
            //设置文件保存类型9 \% M  H" Q: Q  Q1 V, B+ c
            sf.Filter = "txt文件|*.txt|所有文件|*.*";4 c( d6 c7 \, h* c6 a
            //如果用户没有输入扩展名,自动追加后缀
' t, k# }* f( ^8 P6 \; b; S. Z+ P$ p            sf.AddExtension = true;
+ e, @  b, `, C1 M- {            //设置标题' F: x% h  l) O% l: n; Z( r
            sf.Title = "写文件";
% ?. N/ V7 p1 [5 H. v; v$ P            //如果用户点击了保存按钮
' ?6 `: D! R; g: _2 q6 z4 E" d            if(sf.ShowDialog()==DialogResult.OK)
: [0 z  a4 a* |  n; l" n1 r' b+ J            {
  i. G( ]8 h* A2 F5 {; W8 p                //实例化一个文件流--->与写入文件相关联
/ D6 C4 Q" [" s, U$ l+ {                FileStream fs = new FileStream(sf.FileName,FileMode.Create);* m% [- G8 N, G8 \
                //获得字节数组5 `+ j+ Q) _6 i) f
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);, K. V' [( d4 V; u9 U/ Z% b
                //开始写入" k0 {$ }8 |* y" n  t
                fs.Write(data,0,data.Length);, |5 C  P* n* t
                //清空缓冲区、关闭流
6 d. |- u" S7 h+ H! a7 i                fs.Flush();$ u' A+ y$ \# c# y; g" _+ o  L5 r
                fs.Close();/ H* g5 s; b6 {2 o( j+ F

4 o5 X) c4 [# y% L+ u. _            }! I" i. H% b! }8 h/ e- W
" m8 j+ `$ n: F& K: c* G+ V2 H# C! A
方式二:用StreamWriter
6 ?! I: g' x  G) ^) ]/ G8 p, ~2 }8 Y* X7 e
//实例化一个保存文件对话框* B2 O( ~8 x( ?9 y/ ?$ {
            SaveFileDialog sf = new SaveFileDialog();
9 |; w! M6 P6 w; h' r* O            //设置文件保存类型
& D( T* z( w! O            sf.Filter = "txt文件|*.txt|所有文件|*.*";
7 r  A; I* r5 |            //如果用户没有输入扩展名,自动追加后缀
5 |- t2 S; m, U; C9 `8 M7 ?+ L            sf.AddExtension = true;
5 g. t) g( G+ ]+ X) ?- x7 N5 r            //设置标题  d% k5 V! ?5 |" d+ c! [
            sf.Title = "写文件";
% `! H* A! }7 L) g, Z            //如果用户点击了保存按钮
; b6 x; S2 F9 [( G6 B            if (sf.ShowDialog() == DialogResult.OK)- w. Y7 e& R2 H: V* W* t! j
            {5 u6 W# n2 k+ W6 I7 O- y& f
                //实例化一个文件流--->与写入文件相关联! ^2 R: B0 {, S) ~! `+ ^# `
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);0 B8 p' x+ `2 G
                //实例化一个StreamWriter-->与fs相关联# Y+ I0 P" {. K' c) {
                StreamWriter sw = new StreamWriter(fs);8 ]2 F/ k: h7 S; l8 ^4 ?3 ^
                //开始写入: L4 s; X3 m: q5 ?) y) t0 N
                sw.Write(this.textBox1.Text);7 {$ Y+ W# @! c9 ?& m8 N
                //清空缓冲区
5 K1 p+ A! ?1 F# A+ u- ^% o                sw.Flush();/ N3 n1 _4 j; [! A
                //关闭流. t2 \7 B" s8 f$ K
                sw.Close();- _2 }1 ^* R6 F2 A7 H  ?/ s
                fs.Close();
4 d4 Z9 ^# a* k) n9 t7 n4 s            }/ w+ h6 O! L& X% y3 e

  {: ~3 e6 K5 D* S7 ]! q1 A方式三:用BinaryWriter4 @. b' P$ T' w* X
. ^/ p% [2 v; Z+ E# z1 y
//实例化一个保存文件对话框1 T# K7 z; k* g& D
            SaveFileDialog sf = new SaveFileDialog();; l0 m8 F& E$ a9 k
            //设置文件保存类型8 s+ Q8 L2 y9 [2 \1 z4 a
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
' S9 N1 v4 N$ Y$ F  q            //如果用户没有输入扩展名,自动追加后缀3 ?8 e0 m# B- N) w1 E+ W
            sf.AddExtension = true;
4 ?2 r6 G; z+ m; B            //设置标题3 _- @' `& M& j
            sf.Title = "写文件";
# m. O7 ^) N, _' o9 @* Z            //如果用户点击了保存按钮
: T1 ?& z: [0 i8 B: Y            if (sf.ShowDialog() == DialogResult.OK)8 x+ N8 I2 ], w+ L
            {$ n4 C) u8 i% k, h+ R' v
                //实例化一个文件流--->与写入文件相关联) n4 T# U( ^( V+ t3 R7 u) M( k
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
, }% w3 S5 _9 ^9 @. ?/ F                //实例化BinaryWriter
; @& N3 N  V$ U3 ~- I3 p                BinaryWriter bw = new BinaryWriter(fs);
5 ?5 j. k3 ~0 Q  y                bw.Write(this.textBox1.Text);
7 g4 ^8 L9 e9 J5 j                //清空缓冲区
" X( [5 K% _; v1 ~$ B8 O3 |0 W                bw.Flush();
3 ]5 g- N/ ^6 O4 p* Q3 ~                //关闭流
8 d' s7 t  `6 O3 E                bw.Close();
6 G" z9 K- O+ L$ l                fs.Close();
, E1 V1 a, V3 ?! _! j; U  t+ L            }: Q! q0 n3 B7 Y
; v% T3 z- f. N' O4 a% H
C#缓存流示例------>用缓存流复制文件
* \, U! G5 ]" v  e9 V: s$ u4 K$ N2 L( `" o8 U- x' i
C#文件处理操作必须先导入命名空间:using System.IO;' U  c/ g( x/ O% K1 J2 i

4 {/ U; k6 c  S0 v5 Z背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma2 N* H/ ?! U# E3 t

; P* ?) T8 B1 U9 Z: \6 K* v在按钮的Click事件中添加如下代码:$ ?4 h' z, i+ U) M9 }4 ~7 {. m) h$ q
- S' D% c4 B% k0 ^
private void button1_Click(object sender, EventArgs e)- z5 e5 O. L& m
        {
$ T. a5 g, E/ y$ u3 s: g& f, \+ F            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
( N% W0 x& [; m8 G, O- S            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
1 s- L' O3 n2 Q9 N% t            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
* a. e$ g% i' [( w            //创建一个字节数组,作为两者之间的媒介  D5 f% n. U- g, f$ @' ]
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
* f9 [: b" h) u7 |1 y7 e( }            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,: X. @: }# Z  o" r) T; R9 }( o
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
# w, z" R% v2 q0 a# D6 L9 ?% W            byte[] data = new byte[1024];% t( C" H2 z3 c
            //创建两个缓冲流,与两个文件流相关联# v+ U, {0 `5 o8 ?( G' Z
            BufferedStream bs = new BufferedStream(fs);; G# }0 ]5 F' d8 E5 ^/ Z: i1 q8 X
            BufferedStream bs2= new BufferedStream(fs2);
' N- _8 `% `4 N- h2 A3 X  {/ S            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了3 N$ O& _/ a, o1 ]. @4 H3 C
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止" P! Z2 j: M- a5 ?- U& y) W5 c  \
            //即-->那个人没有苹果往篮子里面放了8 ?5 }$ D# s+ ~- C
            while(fs.Read(data,0,data.Length)>0)
4 I7 i! e; b7 _7 ]$ X6 G            {
) T& r" w# n: S% ], A4 B4 _                fs2.Write(data,0,data.Length);
) h9 y) @* F" Q4 x1 a+ M                fs2.Flush();
0 K: K1 l6 a  S- K2 N, L            }
! B* K1 @+ C, s* M            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...( l/ E1 u/ {9 E" ?
            fs.Close();
# s' Z" r' k- w; {+ c$ P; F: V: L            fs2.Close();
  K: `' m( `1 s# G' d        }/ P6 c+ Z- o4 H5 v6 V' _

9 L1 G% }9 D7 U) ]2 ^5 P3 f3 f  {9 K2 W" ?4 N( d8 a9 `3 p, A3 j* p
C#内存流示例----->用内存流来读取图片
) w$ F# E: [% w, ?( tC#文件处理操作必须先导入命名空间:using System.IO;
) p4 P, I6 V, c8 E# ~% G6 s, W9 d' p; m0 S3 h: _
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:$ b: E# [1 @" c/ Z. \
+ Y, p4 N/ Y5 o' L& Z" ]
private void pictureBox1_Click(object sender, EventArgs e)
8 i, ~3 g) w, p! j        {3 \9 w9 d' g4 t9 W) e! k' V* @
            //实例化一个打开文件对话框* C/ R# f4 C3 R( \. d
            OpenFileDialog op = new OpenFileDialog();: t! h, X6 ^1 P: k/ }. E* e
            //设置文件的类型: F$ b% S  T6 x5 Y- V
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";' X+ T3 h" k' p+ E! V. ]
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:$ U1 k; k/ d8 w# N5 T9 Z
            if(op.ShowDialog()==DialogResult.OK)4 A6 j( q& _  P4 v) F) B5 K( ^5 C
            {
' U3 z- [8 G( i                //清空文本
4 r) v9 d3 q+ z  W4 H" M; `& a                this.label1.Text = "";
* O0 I# N. @) y0 b( _1 K) G$ T9 L- V                //实例化一个文件流
0 h  K3 W% k' j3 s. c5 b5 r  p                FileStream fs = new FileStream(op.FileName, FileMode.Open);8 r. B: M) o" j0 m- l) `( b
                //把文件读取到字节数组' L$ d! |% F7 O
                byte[] data = new byte[fs.Length];
" `# ^7 R8 [" k5 [& X$ r. E                fs.Read(data, 0, data.Length);% n! o- m' \. ^0 j( h! [( e/ x
                fs.Close();
. W9 G% `; {/ P  d, X8 |, Y7 f% C2 r" H: f
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去% A7 b1 D2 g" ?* t7 x4 W4 s
                MemoryStream ms = new MemoryStream(data);
% Y; p0 w2 b( l                //设置图片框 pictureBox1中的图片( }( j" `9 L! e. m8 @9 L  I1 B7 p, `
                this.pictureBox1.Image = Image.FromStream(ms);
1 T( y" b, ~# |            }
) B3 F4 h0 d4 v6 L1 j' H: ~! m8 R$ _9 J# d8 S; ^! W$ D
        }




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