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

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

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

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

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

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

c#写文件
- H" k1 |( P2 I8 m2 t% d9 y# ]6 j" S/ Q5 Q, V
C#文件处理操作必须先导入命名空间:using System.IO;
; ~) W) U8 r" P4 T//实现背景:一个文本框、一个按钮、VS2005% k( C) n1 y, c

. J% y  J9 W9 q2 p2 L) W方式一:用FileStream
" x) m0 j4 V; F2 g- P
3 T+ M4 H& I) h  M7 O8 u//实例化一个保存文件对话框
" G. k' O: Y2 b5 z            SaveFileDialog sf = new SaveFileDialog();
- g& M" T" C" T3 n# ?            //设置文件保存类型
( O8 |7 k" t. c; X" R            sf.Filter = "txt文件|*.txt|所有文件|*.*";
% d+ u6 [% {1 R2 u6 Q& K1 J            //如果用户没有输入扩展名,自动追加后缀
/ ]& R8 k  Y8 a2 p            sf.AddExtension = true;
: I( n8 a, U  O. a+ r            //设置标题9 l* ~0 g; K+ X
            sf.Title = "写文件";/ ?( I4 h; N5 f( r3 u7 k
            //如果用户点击了保存按钮% N' l% S2 L4 s' G& E
            if(sf.ShowDialog()==DialogResult.OK)) ~( ~4 a8 A1 Q, T
            {& u$ X+ o( Z& ^  F
                //实例化一个文件流--->与写入文件相关联
( q/ w+ y8 Q6 @7 k3 C                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
+ h5 T! X, G' p# ^                //获得字节数组8 X5 Z: H5 c- ~/ V
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
1 @* p, U- \: [4 ^                //开始写入
5 z* s6 ]. i- \0 _: s                fs.Write(data,0,data.Length);. t; K2 V+ d  q; C& U
                //清空缓冲区、关闭流
. {( ?, o- d/ }, c                fs.Flush();% Z$ ?# U" u0 t, N- S
                fs.Close();
! P3 N' m( s, p* S6 F% Y
5 s4 S& @" n. [4 k5 H0 m            }6 X- z  V( h  m8 |" U: y
* H* v5 G8 `# {" p; w
方式二:用StreamWriter
: P2 `' B( W, c9 l! {/ a) V% S8 {& p$ c9 p8 s  s/ Z
//实例化一个保存文件对话框
% ^0 |; d* ^$ }  |4 v            SaveFileDialog sf = new SaveFileDialog();
0 P# V, \4 d1 C* ^! C( Y5 N+ f            //设置文件保存类型
% q. S: Y. x( e            sf.Filter = "txt文件|*.txt|所有文件|*.*";
+ g; i8 E; f7 B1 L" W            //如果用户没有输入扩展名,自动追加后缀
; ~! n3 e' A; D5 V9 t+ t/ P: ]            sf.AddExtension = true;/ ^3 C8 }% v& l# z9 \
            //设置标题
5 `! L. |/ r$ N& W+ V            sf.Title = "写文件";
5 Y/ ]3 \. F% g% K6 Q% i            //如果用户点击了保存按钮
: J; J0 F5 i% t0 Z/ j            if (sf.ShowDialog() == DialogResult.OK)% e; C3 N1 C7 ~% X7 l1 Z
            {
- y  N2 O1 {8 D8 F                //实例化一个文件流--->与写入文件相关联8 z, \& O0 b4 |6 z2 f, H
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
& c# b4 c. P: D. c, O5 @                //实例化一个StreamWriter-->与fs相关联
# S$ y  c7 m% ?& X                StreamWriter sw = new StreamWriter(fs);! Q% w1 P9 S$ l" k8 V
                //开始写入
  ~& v( E9 c5 P5 ^& l                sw.Write(this.textBox1.Text);
  S9 w2 `, ?: Z" g1 k) S                //清空缓冲区
$ B& R& t$ U+ j( P$ t                sw.Flush();
, z* @. D$ w2 T/ u3 i3 ]# V4 y1 ^                //关闭流* ~- c2 s9 [" Y) Q! G) f  U
                sw.Close();8 q/ u0 c) l7 m4 T9 F5 P
                fs.Close();
  u; V# c0 h  a( N7 M$ P            }' n# ]3 ?6 I" t9 N) }- k

' Y2 V, s; o( A方式三:用BinaryWriter
& }' d8 z) _- l
% b; S& m) i$ ^* ]. V: I6 D//实例化一个保存文件对话框
+ q; b1 O( m% G' w" @8 s            SaveFileDialog sf = new SaveFileDialog();; W# X$ n5 N4 f& {4 C: x% ~
            //设置文件保存类型, f0 y1 l) ?( _  }8 o2 i' L* x5 @
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
4 e: b' a' m  a; F+ c% Q) p            //如果用户没有输入扩展名,自动追加后缀
1 m' [4 t6 B' e            sf.AddExtension = true;
2 Y" k8 U" `; b# E8 F8 i            //设置标题
- W8 M$ a# ?3 L* T0 d5 U9 H            sf.Title = "写文件";
7 {* p' r, i; i% Q, T- m5 q9 F            //如果用户点击了保存按钮& w2 r+ V* A) K+ ~9 z6 @
            if (sf.ShowDialog() == DialogResult.OK)
) N9 @4 x" @' P, \9 ?) h3 `            {% w' S) h5 v  V' P% F
                //实例化一个文件流--->与写入文件相关联3 a; W/ ]3 j( @* N  D- X  L- S
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);: m4 W' o# e% c# G8 z% ~
                //实例化BinaryWriter
: r7 w6 j" i! T' V  J$ f                BinaryWriter bw = new BinaryWriter(fs);
2 d4 C; O1 E, D! |$ K" H& h1 c                bw.Write(this.textBox1.Text);7 p& @1 O4 a; ^* t7 q
                //清空缓冲区7 n0 i, B# R' W# N  A
                bw.Flush();6 p% y4 x( m* d/ m
                //关闭流
) M! V& @( g& K% S1 X5 M' z2 a                bw.Close();* d7 }4 p+ t8 A2 d0 @! a
                fs.Close();
7 w6 ~" L' Z' R! d            }; {. c, O7 c- g, ]. K9 x1 J. X

  C/ o% A' S. D5 _- `2 ~C#缓存流示例------>用缓存流复制文件
& `! Z, Z* x5 ~! J# h# g* k: e
) ]2 F( _% N+ j+ a) e  C# UC#文件处理操作必须先导入命名空间:using System.IO;
1 N8 W& u+ ]$ P9 E
3 c7 \5 c0 W& U1 H  q3 {3 }背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma  {2 p, c$ X7 c
6 G' F7 H, }% Y! [& m9 V: T
在按钮的Click事件中添加如下代码:5 |& w9 X) R7 w( j
. k1 B1 u; L6 E' w" j: `
private void button1_Click(object sender, EventArgs e)
, K  p' j" g. S; c. L; `5 j/ b        {7 J) W) ~5 U% p5 V/ `/ X2 z7 y, `
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
5 ~9 d" z* \, ^* O0 l            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
$ ?6 W) D- v. a- [# ^! J            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
, o% C4 T- E$ q- O  [- R# K# v            //创建一个字节数组,作为两者之间的媒介, {% M5 V2 e" k
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
2 Z: q# E7 E  p% S) N4 i$ H$ C            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
. Z6 u  C3 ]& g2 z& ^            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
! {6 {& v9 q, O2 V            byte[] data = new byte[1024];6 P! U5 O8 G; N
            //创建两个缓冲流,与两个文件流相关联- Y% q) d5 o  U9 o# g& y
            BufferedStream bs = new BufferedStream(fs);
8 {* Z9 O2 p( R/ H: o3 J7 a            BufferedStream bs2= new BufferedStream(fs2);: Y# q' e* b# j* Q) w
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了4 a& C/ F4 e3 H7 j+ M
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
( q, V  C0 [! F1 s6 _- C            //即-->那个人没有苹果往篮子里面放了1 k- I; J# q3 L
            while(fs.Read(data,0,data.Length)>0)* \2 C0 W! d7 Z0 A& E
            {
8 p8 p4 l0 n; C) b/ W                fs2.Write(data,0,data.Length);9 T  [% T: X9 j
                fs2.Flush();
3 f& R7 }: j7 G            }
2 w3 b5 L4 g  r2 j            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...0 n$ ~$ A1 A" x7 n& R8 t( p  s
            fs.Close();
! U( M+ k9 Z1 q5 }% Z% N            fs2.Close();
. V2 C, `: T% x. y+ D7 E. L        }) N; J1 Z; b- n9 i: j: r
- C. t# _! N6 ~2 f- M
/ O% I+ o: H$ j
C#内存流示例----->用内存流来读取图片' t! f% ]6 |1 S% U/ A
C#文件处理操作必须先导入命名空间:using System.IO;/ R9 ], e8 c2 j$ ^- F

3 Q" o+ e/ J% r. Y3 X" c  U背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
. C2 y9 J: Z6 Z) n+ W2 N4 w+ H) f
private void pictureBox1_Click(object sender, EventArgs e)2 f* u) p0 T9 F  P( H) c
        {
$ _7 b! w, _6 e$ N            //实例化一个打开文件对话框
+ J& d2 h+ t! C1 E1 ]7 G; F$ q            OpenFileDialog op = new OpenFileDialog();
8 x' _$ _6 H* N2 b' O            //设置文件的类型
( d7 C7 g* o( f* F. _7 b            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";0 I2 _& m+ D$ p/ @
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
# e# X% L% N1 b& }& P0 ?            if(op.ShowDialog()==DialogResult.OK)
* C+ x( D$ Y* N9 E( y  M! Z$ @            {
  A& T8 _. K0 \1 w6 C. \! {, k$ o                //清空文本  g4 `  l% W) j2 D1 {
                this.label1.Text = "";
; c4 l% v' j# w+ \0 G% z% ~                //实例化一个文件流
3 h" c0 l" j  u5 i                FileStream fs = new FileStream(op.FileName, FileMode.Open);
! j) x: O. |# j- }7 i                //把文件读取到字节数组
! ~! F& I5 o  o9 Q5 R; d                byte[] data = new byte[fs.Length];) c- S; n' K! p3 C
                fs.Read(data, 0, data.Length);/ v7 q' k: h) s! Z
                fs.Close();
3 p. ~3 G  J1 v7 B# u- \. s4 q% K
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
8 Q; {4 @3 D! b2 B6 a- w. |% l                MemoryStream ms = new MemoryStream(data);
. E4 N  A5 Q  ?' F, `                //设置图片框 pictureBox1中的图片
) Y' e) r: n7 k: Y( r                this.pictureBox1.Image = Image.FromStream(ms);
: C- g/ j5 A8 N# n, a" t            }) N* N/ w7 z0 U; B

; c3 o3 S* E+ y' ]5 d2 q1 e0 ]2 K        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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