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

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

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

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

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

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

c#写文件7 r% a! K7 f3 @% B( V

9 O# T; N6 F! O# k$ C1 c5 v8 b4 A5 iC#文件处理操作必须先导入命名空间:using System.IO; ) ?, u! b7 e- y% a3 ~+ |
//实现背景:一个文本框、一个按钮、VS2005
+ n: v7 k2 |  W2 x2 u* Q6 A4 c
8 _) \5 H# H) Y  W. y2 K方式一:用FileStream: S) x2 X- O- z- G& J4 N- F$ E

6 ], _$ b4 x6 z& N//实例化一个保存文件对话框+ I! B6 q' q8 V
            SaveFileDialog sf = new SaveFileDialog();
: V- p3 \+ ?1 b* i4 q            //设置文件保存类型" F  ~8 y% F  s: ]
            sf.Filter = "txt文件|*.txt|所有文件|*.*";! N0 S) ?2 l. N
            //如果用户没有输入扩展名,自动追加后缀5 i7 b" Q3 o5 W, U
            sf.AddExtension = true;
! b! G1 z+ ?6 A# s9 b/ r! G            //设置标题2 F$ g$ F3 g$ z, _# P, c% [$ E9 F/ ?
            sf.Title = "写文件";
. s. I; n# \% g7 j9 D. |+ `, Q            //如果用户点击了保存按钮
% i* H1 |8 B+ w/ e            if(sf.ShowDialog()==DialogResult.OK)% v. [2 ~/ v3 E* F4 ^- h% I( v
            {4 g. S4 d' e9 a. A3 S* U5 C
                //实例化一个文件流--->与写入文件相关联
5 W8 ]+ O& @* }( L$ I                FileStream fs = new FileStream(sf.FileName,FileMode.Create);: g( \7 Y/ I; h/ y. Q9 r
                //获得字节数组
' @, [3 a: \# Z6 E                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);) f* r' t" i3 `( h$ J0 A! X+ O
                //开始写入
: K3 E" r1 _" G% B& E. j$ I                fs.Write(data,0,data.Length);2 P! u6 X5 a0 Z  W: N
                //清空缓冲区、关闭流# B1 b. S/ W! ?3 p5 r
                fs.Flush();
7 M! d( L& a) X1 X0 S5 h  L! C                fs.Close();( c* f) i+ [. i. _# v
: ?! Y) X) F9 v2 C
            }
, r2 m1 m/ Z2 w9 ?8 z: X5 ^* A1 K& V8 W9 h  Z4 R3 N1 K
方式二:用StreamWriter
4 f. e! o' z/ q3 L  R! m
. |# W% J6 A$ K' B//实例化一个保存文件对话框: r) {& z$ [, G% Z0 Z& @) A
            SaveFileDialog sf = new SaveFileDialog();. g8 U* C1 L9 X. |8 _" E9 }& @) [3 Z
            //设置文件保存类型* l+ e6 n+ q: V! M
            sf.Filter = "txt文件|*.txt|所有文件|*.*";& h) U: t# q* }+ \( s! {6 g! H5 s3 H
            //如果用户没有输入扩展名,自动追加后缀
$ N% C( w& d3 @" d1 ?' s            sf.AddExtension = true;+ O3 x1 T2 V. V) N, s2 r
            //设置标题
6 Q2 O5 }" h/ p: }            sf.Title = "写文件";2 i# H% r" }( a/ S
            //如果用户点击了保存按钮0 b2 I" S" Q- Z% p
            if (sf.ShowDialog() == DialogResult.OK)
/ I8 Y5 Z9 \- E0 Q9 d2 M            {2 s* p, J8 \# @. u' Z( R- ]
                //实例化一个文件流--->与写入文件相关联/ |& b2 c' Q/ S6 i
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);+ G! [0 _/ e5 }# ^/ s1 J5 c
                //实例化一个StreamWriter-->与fs相关联% i& e6 H9 N& L0 V, r" e' l0 V* E3 z
                StreamWriter sw = new StreamWriter(fs);9 u  R) L. H9 ]! x( Q
                //开始写入  B. x. D2 v, Y+ {/ Z5 c
                sw.Write(this.textBox1.Text);
. G4 ]! V6 N3 n. i! ?1 F                //清空缓冲区
$ L1 K! H2 k' i! [/ U  Z" \                sw.Flush();
( O' b$ m4 R8 s7 A8 Y( }  {- C) I                //关闭流, N8 f( v* {+ s& K% M: e
                sw.Close();
) W; ~' |  f7 w- D$ h' ]                fs.Close();9 _- l8 I* ]; Y4 t
            }
' ]0 W. g' J$ o# b# @3 ~+ C8 L7 r+ Q8 B. F9 w! \
方式三:用BinaryWriter
$ |6 v) y  |5 Y% |+ P0 X. O
2 x* i& m# M. ]3 }- H5 q//实例化一个保存文件对话框
2 c. U2 K" K( m3 u  n5 K            SaveFileDialog sf = new SaveFileDialog();
5 V" r: J: A* _' o/ P7 ?            //设置文件保存类型+ W5 \1 `- |0 v& B
            sf.Filter = "txt文件|*.txt|所有文件|*.*";) h8 s$ Y9 i% m+ Q
            //如果用户没有输入扩展名,自动追加后缀
6 r% \6 C+ U+ u9 T" R+ X            sf.AddExtension = true;8 N0 S) @/ O( f" D! Y7 L* \2 \, W
            //设置标题% M. I4 W0 S1 n7 P7 |
            sf.Title = "写文件";( t/ X. B: J- `% y, Z9 [2 x
            //如果用户点击了保存按钮1 W. S- R3 a( @+ o
            if (sf.ShowDialog() == DialogResult.OK). G" I. |' v+ }/ n. a
            {- \% A9 [* T+ n$ V- o* k# B
                //实例化一个文件流--->与写入文件相关联
8 {4 Y" @9 ?9 y! g& ?  R                FileStream fs = new FileStream(sf.FileName, FileMode.Create);8 U" u6 N+ B+ I- T  P
                //实例化BinaryWriter& C# g' H6 z# g  }- r3 u4 w
                BinaryWriter bw = new BinaryWriter(fs);
' z5 q3 W0 b$ q4 @                bw.Write(this.textBox1.Text);
" o7 @# X. \  Y, a' b8 C% O                //清空缓冲区
+ U" @* ], b' L8 B& G                bw.Flush();3 {8 e9 Y9 ]. P; x& @, ~+ Y0 @
                //关闭流
& s& q% Q  g3 V; z                bw.Close();3 E. z" t, l8 D3 n' P; r; o
                fs.Close();3 `  [+ S: `) S( K
            }
3 w7 O( q3 y" Z8 J' l- }, ~# O, d- I4 p5 A8 g3 X) g8 y9 o$ W  ^! u
C#缓存流示例------>用缓存流复制文件, l' U) f  Y9 |; g; u
" l: X7 }! g0 B4 l* A, x7 P
C#文件处理操作必须先导入命名空间:using System.IO;& w( t! ^9 k# O
9 F: `- ?1 d) L
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma* u! b6 s# u0 ^# L6 |& a1 u" j
5 X- Z% J' b4 j( U6 g) x
在按钮的Click事件中添加如下代码:$ L! e/ U6 P( K4 J3 C" e
+ L) q* R  S6 }/ P* q+ L7 k) B( w; g
private void button1_Click(object sender, EventArgs e)
2 T& d: j/ ^8 S6 ?, R* J6 u! W        {
4 [4 g2 a5 D8 X            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
' g0 c- j7 |% o+ G9 L  }9 A& w            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);8 Z5 p7 ]. L) g5 n7 @
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
8 w$ ?, t/ `/ a# Q" Y9 l            //创建一个字节数组,作为两者之间的媒介" r3 n$ A$ K9 r+ ~
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,9 c5 c( j+ m  p! j0 j( o& q
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
7 s% ], I" B4 O            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率; [/ J( g7 a$ q! q9 Q, D
            byte[] data = new byte[1024];5 |0 \! M, i# D! s" o1 L
            //创建两个缓冲流,与两个文件流相关联
6 l" M, C' n; A6 Y. @( r' t- Q4 d7 v            BufferedStream bs = new BufferedStream(fs);
4 k0 @3 b9 p4 M: D; H+ x' J            BufferedStream bs2= new BufferedStream(fs2);1 A' _& B  P  D; Y3 p0 p
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了  d+ y: a9 c3 s# @9 t
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
; t% I+ }9 ~5 m2 `) x0 z) t            //即-->那个人没有苹果往篮子里面放了) D: e; \4 Z6 V8 F) I
            while(fs.Read(data,0,data.Length)>0)! r, N( n0 S. `6 P
            {8 t: n& X7 u9 E2 q. U1 F
                fs2.Write(data,0,data.Length);
- A% z" b( W6 u" i& s5 M$ E3 j                fs2.Flush();
/ W( `- D# h4 u: i  I  `) v8 o$ A" ^            }1 ~9 Z6 b7 f: R) v5 Y4 m
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
& X  r) S9 D0 F" o            fs.Close();/ ^6 C. m+ ^* X
            fs2.Close();2 i/ n6 ~6 C& e- C
        }
7 |# o2 l7 s( t1 g0 p( C$ X- I% q0 g3 z2 C, l  _
7 w0 U1 z$ a4 ?; W% ~6 o
C#内存流示例----->用内存流来读取图片' Z2 R7 c2 z+ ~: Y
C#文件处理操作必须先导入命名空间:using System.IO;9 j; z7 \% n/ K+ w6 P

( D) c  q0 w# G背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:& H) H$ a" n) ^3 O
2 h4 h  N  ~9 n% m
private void pictureBox1_Click(object sender, EventArgs e)
* [1 g% s. o) W( C: V        {& u5 f! k2 V  C/ }
            //实例化一个打开文件对话框  b/ _* t$ j4 E4 l) Z
            OpenFileDialog op = new OpenFileDialog();) w3 o3 }- U% R
            //设置文件的类型
( W5 L; w  J3 _; i, [* Q: S: Q' s            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";8 }0 O5 Z* Y! ^% G7 \( ~
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
8 _% |: U/ U: B8 f4 C            if(op.ShowDialog()==DialogResult.OK)
5 e, |  ]! U# T& h  s+ P3 g1 P            {
5 e+ W0 N( y8 D7 S* e+ k( Q                //清空文本; P/ p1 h% |2 ]* w
                this.label1.Text = "";+ c  o4 z/ n- s( M2 [
                //实例化一个文件流
* v) q* |7 P9 L0 V                FileStream fs = new FileStream(op.FileName, FileMode.Open);) z, u$ V, k! L# M  K1 d: Z7 A
                //把文件读取到字节数组
' g  P3 z; j3 r9 s8 o+ k+ e                byte[] data = new byte[fs.Length];& x( o' j3 @4 Q- l2 D
                fs.Read(data, 0, data.Length);  r2 g/ S- Y& \" F/ _" S
                fs.Close();2 U% T. B9 p: m. M) _1 ?
2 B* Y# A* A7 t; p1 a. Q
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
+ w8 k( f# T1 m6 n+ S; t                MemoryStream ms = new MemoryStream(data);! H& M- N' N; T$ [) l
                //设置图片框 pictureBox1中的图片6 Q6 E& I2 H# A1 N+ o* Q  ?) U
                this.pictureBox1.Image = Image.FromStream(ms);
) X) @' x+ z  H# D' y# I4 x            }. G. r" f: H; b4 i5 i

: l8 E/ F: e7 y/ {2 F& S" I3 n        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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