设为首页收藏本站官方微博

【汉化资料】C# 文件操作代码

[复制链接]
查看: 1566|回复: 0
打印 上一主题 下一主题

【汉化资料】C# 文件操作代码

跳转到指定楼层
楼主
发表于 2009-4-11 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【汉化资料】C# 文件操作代码

c#写文件
" _% t3 x2 o$ K9 Z8 @3 Z1 ]( e; K( x, c' j; ~
C#文件处理操作必须先导入命名空间:using System.IO; # R# C( s& H4 I
//实现背景:一个文本框、一个按钮、VS2005
8 e5 \  p& b( |& p: t% I9 {) O6 }& Z6 u8 d! ~
方式一:用FileStream
) C9 }8 \' V, z4 V
" W4 v/ @8 V6 a5 Z3 @  z  i//实例化一个保存文件对话框. q: T; J; X0 A. ^
            SaveFileDialog sf = new SaveFileDialog();
- I# ~8 ?) C* [; p: F            //设置文件保存类型
) K$ Y/ N# ~5 i* W0 I            sf.Filter = "txt文件|*.txt|所有文件|*.*";
" j2 M3 r6 M  Y9 I* Q            //如果用户没有输入扩展名,自动追加后缀
( N  ]. _" ^3 O# p' h0 M            sf.AddExtension = true;
" ?0 Y1 w! ^# z0 N# o            //设置标题
1 P/ b+ v% ?8 h3 D: Y+ x1 o            sf.Title = "写文件";5 b) J. z  l6 i2 J7 ]6 [/ b
            //如果用户点击了保存按钮
  o% K) j+ R% ?. {1 ~; I4 P            if(sf.ShowDialog()==DialogResult.OK)
+ J4 p( v: M6 {  m0 M% d  s            {
3 k1 W( w, N& B7 ]                //实例化一个文件流--->与写入文件相关联* E- ^; ^: Y5 _) Q' ?
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);. t/ L& m# t+ q5 o, x
                //获得字节数组
0 M7 a% O/ a/ X! z4 p) C                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);1 `; ^" t% Z; I( v0 {" C
                //开始写入( y- _: Y/ [9 U& D5 D3 O. t
                fs.Write(data,0,data.Length);/ C3 n, B9 X9 W3 B: e
                //清空缓冲区、关闭流
& C" f- `) S* L6 @& n( S                fs.Flush();
, X/ ]% ?- r$ y1 ?                fs.Close();/ x4 T6 l% A4 i, ^! A" e& T% w! T

( B( }# {, q5 F# d8 ?7 D            }
' j& `% z7 @" a( ~; ^+ {2 R. G0 k2 v. V" u
方式二:用StreamWriter
+ `% V' X; ^6 r& z: l
+ R) ^( s  F9 }9 g' z' d5 r7 t: Q//实例化一个保存文件对话框
; p2 g) l0 G% x+ w, x2 C% S6 z& ^* C            SaveFileDialog sf = new SaveFileDialog();3 H  I1 r! o  c+ U' U0 ^/ H
            //设置文件保存类型
1 i8 T0 o& q5 `; J0 R5 @. M            sf.Filter = "txt文件|*.txt|所有文件|*.*";& S* b5 [" J5 G- u+ ~: T  C+ _
            //如果用户没有输入扩展名,自动追加后缀+ m( u: F) S) V- `$ F- W! \
            sf.AddExtension = true;
8 {; O% A: N% S- s8 x/ F$ p8 p. T            //设置标题# m4 H* B9 x1 `- P+ k3 C; {3 ^
            sf.Title = "写文件";
1 q$ [- Y# c; [/ w/ Y7 o' k            //如果用户点击了保存按钮
5 j( |' q- R$ b( D5 V5 k/ u! L4 y            if (sf.ShowDialog() == DialogResult.OK)4 V" m2 W. ?( E; D# L
            {8 D) x: `7 u- |# c. P
                //实例化一个文件流--->与写入文件相关联0 n' f- _. d2 q* Z) w7 `4 v& L
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
1 l, o, T8 `! J6 |- q                //实例化一个StreamWriter-->与fs相关联5 @2 V1 W* G/ O; T3 |) z
                StreamWriter sw = new StreamWriter(fs);, Y" k9 c! g8 o9 d0 s2 r* b1 q+ ]8 ]
                //开始写入
" j/ d: B5 ?7 E; Q                sw.Write(this.textBox1.Text);
% ~0 r3 W1 E/ ^, h% c                //清空缓冲区
7 ?6 {* H; W5 \  C8 v$ X                sw.Flush();, ~; B  D, Q) @
                //关闭流
1 N/ @: `: k: i  p; I                sw.Close();2 T; D5 F7 m0 l8 I5 i+ n% o
                fs.Close();9 j( w, u" X, w7 Y$ C/ L
            }; s+ T& T2 m" s7 C

! X7 ~. l7 P7 o" `" x方式三:用BinaryWriter
' h& R" @# ^( A' N
3 E, J; o( K4 @, Y3 e8 o//实例化一个保存文件对话框
. ]/ h4 k( s1 x! c. |            SaveFileDialog sf = new SaveFileDialog();
6 D6 H+ r& ]. M: w+ O2 I, |( Z  R' F) |            //设置文件保存类型6 P) B& }: T/ _# ~7 F) E* r
            sf.Filter = "txt文件|*.txt|所有文件|*.*";: s* }+ ]6 K0 s# i
            //如果用户没有输入扩展名,自动追加后缀
9 N/ `# D; Z0 J+ n            sf.AddExtension = true;
* E* t) P$ ]8 _7 {$ l            //设置标题" t# K0 p/ r! |% ]. z* r
            sf.Title = "写文件";
: X$ Y, V2 v2 P3 s5 q: ?2 V) T            //如果用户点击了保存按钮
& k- Q5 l- i6 `9 ]9 s) C1 b! q            if (sf.ShowDialog() == DialogResult.OK)/ S- i0 B3 B4 c& v' f
            {2 X8 d/ j" T, x$ X
                //实例化一个文件流--->与写入文件相关联1 i' z/ {0 a! v- T2 x) h) [
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
1 Z" s% P1 j+ N( B+ a8 D                //实例化BinaryWriter3 u1 z& u! e7 v/ V6 A$ }4 i" J
                BinaryWriter bw = new BinaryWriter(fs);
6 ]3 Y1 M3 \# C1 l! j1 r0 D                bw.Write(this.textBox1.Text);
! ]7 U( r+ X, a. Z2 p3 J9 j* _1 e                //清空缓冲区# H% k6 z' e9 |, D# I, r# r
                bw.Flush();0 D6 ^, Z8 ]. r
                //关闭流# v1 w. @6 p/ A; {5 \
                bw.Close();
& r( U/ z& q4 K3 P- m. J                fs.Close();, l( O+ l0 ~3 g- U: I& ^
            }
- S. k% z- f" \
" Y* e7 ^3 h* A- h! lC#缓存流示例------>用缓存流复制文件$ s5 c4 T1 t' B' |. G

8 T& D* w* J! r$ P) N3 U0 K. gC#文件处理操作必须先导入命名空间:using System.IO;
4 d7 e4 F1 S0 y2 O
( Z' y" k9 t) H3 ~背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
/ D9 R/ v; Z# z# l* m6 q/ \0 \: I2 S/ ~: L5 Z" E* p
在按钮的Click事件中添加如下代码:
- Y  I) X- R- h6 `/ ^4 w
% a$ x6 ~4 A2 E+ E5 V3 f2 b; ]8 bprivate void button1_Click(object sender, EventArgs e)
( E: }$ L! s& k2 q$ {        {
4 j' T2 v  T0 h* ^/ C& A. M2 l            //创建两个文件流 一个是源文件相关,另一个是要写入的文件7 O2 b! o8 g- _% C% X& Q& q
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
; {, N- M/ `: u. v4 J8 y2 x            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);7 ]; O! v+ n$ `. _
            //创建一个字节数组,作为两者之间的媒介- \* m$ t( _, R6 j8 r
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
5 H4 @1 O8 _. o9 H" q$ i2 |* x            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
& F! F5 x9 }& r* t6 y  z2 `( I& g            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
0 |$ p* p/ ^8 a  o* O- C, U            byte[] data = new byte[1024];
8 s5 D% S( ]- x            //创建两个缓冲流,与两个文件流相关联
5 @  I& }+ e% K' ~            BufferedStream bs = new BufferedStream(fs);5 V/ K, M) c1 H& j& n! M
            BufferedStream bs2= new BufferedStream(fs2);0 \! w& G/ C5 d: v# o9 w: @" E
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了( p7 V2 u$ j' u  _- S" ~2 y5 b/ z) W
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
% k. ]9 v' g* X0 t; X$ o5 H% j9 W            //即-->那个人没有苹果往篮子里面放了. l9 |8 N# T+ S! `* ~
            while(fs.Read(data,0,data.Length)>0)& V( u, v: s2 P$ r0 u$ J/ ?, A+ p, l
            {
/ }5 a% ^# b6 w; L" c                fs2.Write(data,0,data.Length);+ U5 y3 N5 X' @7 r2 S3 S7 }/ \
                fs2.Flush();6 M% K& |2 X6 ~# c1 \
            }; A2 s  H7 F6 b0 E1 U& n
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
) u, I. g: n/ p1 Z/ f9 A, u            fs.Close();
0 G+ k# i5 W& }5 K, `8 D5 v1 Y            fs2.Close();* |; e. w8 @% V3 m% o7 r! |8 i0 ]  b& _
        }5 D' ~, C- I' ?5 w9 R0 Z

4 U& }& I  B9 l$ W  w& n$ B% y- @. S
6 Q" ~2 U- i! b1 W" z% fC#内存流示例----->用内存流来读取图片
; g7 _# ^: B1 S" W3 n' E, z2 fC#文件处理操作必须先导入命名空间:using System.IO;
0 ~. `' t! \" }  Z2 K
/ w+ L/ `: t( P+ s" i: F6 T% @$ ]) t8 M背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:9 ]' b8 V" Q4 u& g& ?: y( i* W/ }

$ y! W/ ^- d1 |, U# s% W; c* Kprivate void pictureBox1_Click(object sender, EventArgs e)% y, k* A& L- x. N0 t" P( X+ H, j
        {+ Y# s  g6 Y4 ]' _
            //实例化一个打开文件对话框
& h2 X6 C' O: ^9 V2 b! M            OpenFileDialog op = new OpenFileDialog();
! \7 f4 t6 d2 ?            //设置文件的类型
# D- c8 b- B7 Q- W            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";" W8 ^8 a& p7 I; O1 N& [1 z
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:8 w2 J% v6 }0 G5 w) S
            if(op.ShowDialog()==DialogResult.OK)5 ~9 |0 K/ d- \$ E
            {( {) Y: q7 a& u: H8 o5 X+ v' O8 H
                //清空文本
# p8 |6 r1 n& @* {$ P/ |5 p  P: W. x                this.label1.Text = "";. C2 J+ ^1 ?& ^$ {+ f/ p
                //实例化一个文件流8 a8 ?+ P0 c4 H5 S; n1 \
                FileStream fs = new FileStream(op.FileName, FileMode.Open);, s2 I  f: {# f
                //把文件读取到字节数组
; x0 A' K1 R/ \, g! V                byte[] data = new byte[fs.Length];/ t4 s! n0 Y. o! ~2 _
                fs.Read(data, 0, data.Length);
3 w3 R2 _: W8 g4 b/ U                fs.Close();/ [+ q: j5 T' F; W7 u

7 J  _: q6 X+ S$ a: J, o  v                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
! ?& v$ |2 T4 Y) N" y                MemoryStream ms = new MemoryStream(data);
: B! s7 S% S4 V: V                //设置图片框 pictureBox1中的图片4 p$ J9 t/ l  M( x$ p3 e
                this.pictureBox1.Image = Image.FromStream(ms);
% h1 L" w/ [0 ]            }4 z4 D$ @9 t* r9 \/ {, z% N

+ u/ _2 d8 |4 @, \) d        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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