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

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

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

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

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

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

c#写文件
6 M& V8 ]0 S+ l' O6 `& ]3 ?3 L9 Q; k' W% i
C#文件处理操作必须先导入命名空间:using System.IO; 9 l$ o% [! Y# M- z7 c6 j+ i
//实现背景:一个文本框、一个按钮、VS2005$ }0 c$ F. t2 {6 K# Y4 ^5 ]
! R, k* B( y( d* W& x
方式一:用FileStream7 H2 q# i9 V1 _  Y6 q9 ^2 ~( `. T

; [" b. V3 J3 p1 r//实例化一个保存文件对话框
8 J6 s/ a) |9 `' `- I            SaveFileDialog sf = new SaveFileDialog();6 i6 b' C& J$ |/ [+ a
            //设置文件保存类型! B# d' P, Q# J' o+ z( h. I' P
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
5 }& M! I, I; E" \6 N3 Z            //如果用户没有输入扩展名,自动追加后缀
& C; Z( S3 f- l4 d/ _( ?( |            sf.AddExtension = true;8 d! v1 J( d- R. {& _% ]/ N
            //设置标题/ \# W  f) V* V* {! l
            sf.Title = "写文件";
# ]7 M! Y$ }) H            //如果用户点击了保存按钮7 ?; I0 I' i8 A, r, F4 J6 {7 |. v
            if(sf.ShowDialog()==DialogResult.OK)
/ d9 R, N3 S! w1 k            {
  Q& A0 Z2 p" o4 E                //实例化一个文件流--->与写入文件相关联
) w. N8 [7 B! _                FileStream fs = new FileStream(sf.FileName,FileMode.Create);  N1 l' X" e5 n9 Y
                //获得字节数组; G0 j8 J) M9 m* D& J9 e! X0 D( E
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);0 w1 @" K4 ~5 T% X( E4 q+ Q" O) ^
                //开始写入2 J, z' j' s' q% f: f: e1 F4 y9 K
                fs.Write(data,0,data.Length);; ]' C' U. Q" {% X$ _1 L
                //清空缓冲区、关闭流
+ K! R9 r3 H  i0 K                fs.Flush();+ l" U, f) t8 [- |2 a8 I
                fs.Close();
6 x" f5 Q$ j! Q/ {( t# H2 Q' y! Y: V/ O; ^/ H. K9 k) ~
            }+ h# O  W" a2 S& R$ L( r

! d2 i1 v, @( }& y; z7 F, ~7 I. n方式二:用StreamWriter  o* r: f6 d: f2 w

% I  z5 A9 Z/ L# |/ u: x//实例化一个保存文件对话框
  I4 L" P, C" S            SaveFileDialog sf = new SaveFileDialog();! J) B( i3 ?- e* I: J$ ]& Y
            //设置文件保存类型
5 J: Q; O# S0 g9 A9 T& w3 i3 ?" d; V            sf.Filter = "txt文件|*.txt|所有文件|*.*";5 X& y0 c' Q8 X
            //如果用户没有输入扩展名,自动追加后缀
4 f& [$ U1 d/ F9 p3 V2 M! o            sf.AddExtension = true;- H  f. Y2 q. g3 @: [6 C! Q
            //设置标题
9 l$ [. T2 A# g# s: B            sf.Title = "写文件";5 T: h' u& i5 `3 y  _: v
            //如果用户点击了保存按钮" I* F/ P# y7 C9 B% q1 U
            if (sf.ShowDialog() == DialogResult.OK)) }9 G% h/ M) Q  h6 v
            {0 M- z/ C/ `' z1 J
                //实例化一个文件流--->与写入文件相关联* I3 Z$ e+ u5 f# ~
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
6 ]; ]: p  A9 ~3 `                //实例化一个StreamWriter-->与fs相关联7 p! z1 G$ v; U) }- C/ T
                StreamWriter sw = new StreamWriter(fs);
0 {. {  M6 `7 [: Q0 g1 A; e3 x7 R                //开始写入
: Q+ {! ~( U0 A( {. p- ]                sw.Write(this.textBox1.Text);/ z& c  ]1 D. U6 q# ~/ z
                //清空缓冲区* ^0 W1 v" P) E6 P: B
                sw.Flush();
- d4 _! ?; [8 y' P* b                //关闭流, [; N& G, c4 x9 @
                sw.Close();6 [! p' y  [* Q- p% B0 y9 t* A
                fs.Close();
' h) L& ]: [( B0 ?1 f, ~7 T- {            }7 T5 S0 l* N& L8 l+ ~
+ H; v* v4 E2 [8 E
方式三:用BinaryWriter/ r  _' {5 h! x/ q) ^- X

( S8 p( G$ ~4 w9 B- Q//实例化一个保存文件对话框# _" ]2 d8 m, S" g
            SaveFileDialog sf = new SaveFileDialog();
$ S( L; a* D' Z: h9 [            //设置文件保存类型: i' B. J7 t, r9 i  e
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
& ?' w! _1 |& J) k1 `/ {            //如果用户没有输入扩展名,自动追加后缀2 e' \& d) j6 R: D
            sf.AddExtension = true;0 }% l. T, H9 `9 E: w
            //设置标题
# Y( x' Z; s' A; k, o# e            sf.Title = "写文件";
- e$ W7 @7 X' C            //如果用户点击了保存按钮
& R0 ~$ B9 T8 `. Y            if (sf.ShowDialog() == DialogResult.OK)
, ?- ~# H- V2 U            {: t; O9 ?' g, z% j
                //实例化一个文件流--->与写入文件相关联8 }7 N4 p( H  ~0 R* W1 t+ r
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);! _; X* P/ K- L4 L5 \/ ^- g
                //实例化BinaryWriter
4 g1 |, u* x7 b                BinaryWriter bw = new BinaryWriter(fs);
/ Q- _" ]  S! `& B8 y                bw.Write(this.textBox1.Text);
3 H+ g0 g) G* ^: r4 S0 j9 x                //清空缓冲区9 y+ Z4 v, z  m8 K
                bw.Flush();- c: {& U9 n/ `, a
                //关闭流6 }; h5 K) G$ {5 ]* Q& u
                bw.Close();
6 l3 e8 r& P7 f  H: {4 P                fs.Close();
9 C; U" K. @3 V- O            }# R* H9 C. n+ g4 [7 d9 Q8 K# R% o' W
& E5 ~. ?7 `+ H: W' S; _3 P* w
C#缓存流示例------>用缓存流复制文件
9 z. X& z9 I7 e" j( m5 \8 g1 B' y: x" A( o7 ~4 e( z
C#文件处理操作必须先导入命名空间:using System.IO;' o4 J- B. V1 u0 I
/ @$ g4 A/ W; V1 t  a8 H  m
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
! @, `" C4 D. g* |) S3 G; o5 x& r+ c5 S
在按钮的Click事件中添加如下代码:
/ `+ J& W0 R* N# Z. j2 n, f$ D1 \( g0 w4 a
private void button1_Click(object sender, EventArgs e)9 ?* D8 p0 K/ _* y( F7 f3 {
        {
* s" N" p6 [9 r( r) t; `            //创建两个文件流 一个是源文件相关,另一个是要写入的文件6 Z  w( G  E. i/ k# u
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
5 t5 G' y7 @9 ~% ]( P            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
+ G3 D0 ~. {( c. y' Q( w            //创建一个字节数组,作为两者之间的媒介8 Y+ Z" V- L$ l; [; q; G
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,- V& l# a9 X. {5 a% U3 b& p" S
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,! O2 ]7 g: @/ @7 g0 u8 Z; P
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
, q8 ^) K, m% w            byte[] data = new byte[1024];* @( {4 n6 T. J7 N8 ~* T
            //创建两个缓冲流,与两个文件流相关联+ V4 g# F+ N3 _6 D* T  N
            BufferedStream bs = new BufferedStream(fs);
$ t+ X, a7 @( r& K$ D            BufferedStream bs2= new BufferedStream(fs2);; \8 Q4 C' s( w7 T# ^
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了' ]4 q! g% A# i7 p, U
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
2 g8 g' y$ ~6 D1 M, F            //即-->那个人没有苹果往篮子里面放了- y0 [6 s) W0 m7 o) s2 G: j- l; b( X
            while(fs.Read(data,0,data.Length)>0)
8 K" }7 l- ?3 l+ a3 s1 D            {
; U6 d, u6 K) V! D& {# W, ?                fs2.Write(data,0,data.Length);
$ Y9 j* E: \6 n: j8 u& C                fs2.Flush();
, \7 C1 R; T- s- i            }( U; `& t. V7 |$ V) z
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
& f# e# I  T3 D7 D" x            fs.Close();
% c+ h# Z3 Z& D# o# S            fs2.Close();
3 a7 y9 Q4 M9 o2 ^        }
' s  n2 j7 a3 I: D
8 Q3 r& K! e% }4 J8 J$ O- X" }2 m" G' l
C#内存流示例----->用内存流来读取图片2 m/ I7 v" E. J. ], j: S- b
C#文件处理操作必须先导入命名空间:using System.IO;4 T1 ?& R/ d: T* m0 f

& Q0 _/ H& j3 Y# C: L9 f背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
8 b/ _7 M' ?$ p6 `  |/ V: p' G0 g* r. C& d2 q
private void pictureBox1_Click(object sender, EventArgs e)
9 F; M: F; F7 Q/ m5 X# H, O0 A0 G        {
: N7 D$ d3 D6 _0 ~) S2 j            //实例化一个打开文件对话框
! [1 u. |# y# J! M" S" G            OpenFileDialog op = new OpenFileDialog();, E- }" k* ?2 s6 ~0 d9 @& e
            //设置文件的类型
+ Z( O3 T$ ^) ]            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
  r4 q4 {1 k2 t) E            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
3 L, v8 F; J/ Z+ D            if(op.ShowDialog()==DialogResult.OK)
6 q* N- u) F2 E. }9 P1 N            {4 ^* ?" q3 {+ v+ q8 z
                //清空文本
( w/ o( a4 {4 k( S% `* w                this.label1.Text = "";
; T& D! j7 k, }# G+ v/ C                //实例化一个文件流
; z  w" C! G1 k, W( d3 E                FileStream fs = new FileStream(op.FileName, FileMode.Open);* T, p* w6 S  W  U' J2 g
                //把文件读取到字节数组
* V/ t* d9 k$ s; r0 O$ w2 a8 B& V                byte[] data = new byte[fs.Length];+ |+ w% n) d2 d
                fs.Read(data, 0, data.Length);0 t& S6 k1 d7 c2 s- h1 K: q6 G' o
                fs.Close();
1 w' o; X4 u% [" H8 w" y. z6 {* d" p" b/ W) t0 b; x) k
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
! r$ V+ A8 p! _; U                MemoryStream ms = new MemoryStream(data);
/ v; c( Y% o' t% r! M* V. K+ A                //设置图片框 pictureBox1中的图片9 k) C0 C8 l7 G3 f
                this.pictureBox1.Image = Image.FromStream(ms);1 t/ G, }; V- T' Z! \' }  o( Q
            }
, O; {% ?, e! e! K% {4 ]# W0 M% r. ^3 M6 @2 }# A4 x, U
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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