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

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

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

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

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

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

c#写文件, `8 n# Y3 }. [9 d, ?! L
, u" ?7 o/ A) H
C#文件处理操作必须先导入命名空间:using System.IO; 2 O) C' V* H0 A# K& Y& q
//实现背景:一个文本框、一个按钮、VS2005
' H5 x) b7 b  u* h$ G+ W
- z9 h% M* H) Y4 v8 K3 \' D方式一:用FileStream+ i; ?2 K1 y- }9 q$ A

/ n4 C/ ^- D* g' c* O2 S//实例化一个保存文件对话框9 j5 P9 w, z3 @( J/ G4 z
            SaveFileDialog sf = new SaveFileDialog();4 J0 T. _. ^2 t, V
            //设置文件保存类型5 j& R" p1 d1 T6 K3 m
            sf.Filter = "txt文件|*.txt|所有文件|*.*";/ V5 X! F+ T3 {
            //如果用户没有输入扩展名,自动追加后缀
, \" Y# L- W' L5 N+ _0 B            sf.AddExtension = true;
4 H0 N8 o2 N) h& H+ v% D6 Z3 D            //设置标题' e' ~7 E% s, g: M; Q# @# F/ A3 A
            sf.Title = "写文件";
+ c+ ?$ H4 X- m; ~            //如果用户点击了保存按钮
% A& X2 y6 `8 o1 I4 r; ~            if(sf.ShowDialog()==DialogResult.OK)& B; h( l% S( E; \% Y* Y
            {8 z+ g" x% }4 ?0 S" B9 a
                //实例化一个文件流--->与写入文件相关联
5 x3 e, ~: Z; u$ K% V0 Q) [: s                FileStream fs = new FileStream(sf.FileName,FileMode.Create);5 t8 C% u. u- U. q5 v
                //获得字节数组
) J: _, r6 n/ c# ~( F8 V! y* ?! T                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
% J. X1 O; a% v$ e1 B! Y                //开始写入
6 g& A* q$ A  T/ Y6 o2 m9 |# A                fs.Write(data,0,data.Length);, s& O; V; @$ r
                //清空缓冲区、关闭流
5 |4 g5 z9 l  [8 E& r+ n                fs.Flush();
, `5 _1 ^. o8 i* a# j, Y                fs.Close();
+ j, x  G6 e; s2 m9 W7 ?( g5 A' e. `( y# u7 u9 Y  }3 i5 R% \
            }
0 [& N- f& f: Z% e& I( V
1 n* m; X8 I" {/ S9 \4 U4 W9 W方式二:用StreamWriter; \0 Z6 _8 e% P1 H/ r' L
2 K1 \) b; N& I
//实例化一个保存文件对话框
# e" B0 ^6 F5 A( M' C            SaveFileDialog sf = new SaveFileDialog();
% Q5 h' N( e& l& r$ I) ?/ b            //设置文件保存类型3 V: e8 L) j, V6 D2 E+ H$ L' g; ~
            sf.Filter = "txt文件|*.txt|所有文件|*.*";( S+ @3 p$ o9 M  Y
            //如果用户没有输入扩展名,自动追加后缀8 S# J, {9 a6 d, z- t! f
            sf.AddExtension = true;. T- [% v; l; Y$ D. Y' T3 S& e
            //设置标题1 e2 b3 w& E) o) t. c, J" T
            sf.Title = "写文件";
: w$ p9 }  r- }: Z& N            //如果用户点击了保存按钮1 b4 u6 a8 N; n# |# w! k) S
            if (sf.ShowDialog() == DialogResult.OK)/ I6 `; n! e* G6 A5 t
            {
0 V, U( d6 d4 R3 P' d# Z                //实例化一个文件流--->与写入文件相关联. @/ M) y8 U1 h1 m; Q
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
1 x- d! r5 B. T                //实例化一个StreamWriter-->与fs相关联
& L! T' v, R% }5 e: L. k. F                StreamWriter sw = new StreamWriter(fs);0 ]: P2 z/ f" Z. O, C$ v  ^
                //开始写入: X' z6 B" h7 R' z6 t' h  H
                sw.Write(this.textBox1.Text);
# s2 h7 P/ p# K                //清空缓冲区
) P8 g, b0 J" w% C+ j1 M, F                sw.Flush();
: M0 i" }; v4 m9 l! u, V7 F                //关闭流
0 p# P5 {, R# n8 Q3 n# i' {5 a                sw.Close();7 E* m4 P$ l5 w% E+ ~
                fs.Close();; Y: Q; U8 L! p2 \
            }
7 m: P8 c1 s! O: ~9 p6 Y
% B6 b/ ^6 H  {方式三:用BinaryWriter7 K  `  n% v  e/ u; f

, V7 H' n) ~9 D0 x( S: L& ^//实例化一个保存文件对话框; R  J9 k! G. e# z
            SaveFileDialog sf = new SaveFileDialog();
' W6 n& i3 c) n9 ^% j: r8 U            //设置文件保存类型2 j" t# l1 T  _  I
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
3 u; Y5 Q; Z7 i) I. D9 }4 r            //如果用户没有输入扩展名,自动追加后缀
4 F" |/ ]% l) D" Q# J+ }7 p            sf.AddExtension = true;
% n9 _- X7 k& J- E            //设置标题4 O6 \/ A! [! @4 w' R' Z4 A
            sf.Title = "写文件";: _0 J9 e" q( ?- g8 a: h+ k
            //如果用户点击了保存按钮
# H+ J" R4 |" t. f  I            if (sf.ShowDialog() == DialogResult.OK)
4 F+ t- @0 Z& ?4 v5 s% q8 N            {
2 o8 C. g+ n: r5 i9 `9 M                //实例化一个文件流--->与写入文件相关联9 l) v! b+ p- n  c6 v
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);5 c. z5 `3 |; M9 P9 a/ r2 L8 \
                //实例化BinaryWriter; C+ {% y. J" m% @
                BinaryWriter bw = new BinaryWriter(fs);
+ _% E# t' N4 [+ U                bw.Write(this.textBox1.Text);
  N. G) ^3 X" c9 V& U, d                //清空缓冲区
, ?. d& E9 d8 L) m( U3 ?, Y                bw.Flush();5 i, o4 h2 d4 ^# S* k$ ]  l( z4 w
                //关闭流
  ^: r' i& g! `1 O/ @& U                bw.Close();3 S' H! N/ z5 ^9 i1 J
                fs.Close();
. z" U8 Y3 i2 n. j. }            }6 t! [* x9 V5 D5 V

  j, q, P/ N8 PC#缓存流示例------>用缓存流复制文件& H; Z& ]( L* e2 J
1 ]5 s: j7 P4 k+ x0 m' |
C#文件处理操作必须先导入命名空间:using System.IO;" g6 p8 }' }. l$ z+ t

, T$ [: `" n5 B) P+ i背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
  S6 p' w8 N* i2 _
5 l6 A5 f* e% o! c2 V在按钮的Click事件中添加如下代码:
* L7 q7 j' ~+ r/ ]1 U, V3 y/ v8 x$ w2 E6 C4 V  F& X8 [
private void button1_Click(object sender, EventArgs e): C  O4 B3 e2 S* z
        {2 A0 C5 q" h  s9 r& x, K$ \
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
$ B5 j2 J/ u9 l! S, B            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
* y7 c* I' i; X, |; E            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);0 q& L- Q  T# p" V. E
            //创建一个字节数组,作为两者之间的媒介
  t- v3 ?1 ^! `9 Z            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,7 [( T8 a" J2 Q9 ~: \: S
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,- y. y: s( }" |3 B; K' C/ |
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率7 m: E7 B$ C; M2 C
            byte[] data = new byte[1024];
; f" F- N1 t+ ^8 W            //创建两个缓冲流,与两个文件流相关联
' o* ?& j; g' J2 T! Q( Z            BufferedStream bs = new BufferedStream(fs);9 L7 L3 ?. E5 a4 b4 I
            BufferedStream bs2= new BufferedStream(fs2);
& s0 N7 i2 R9 {& l  B- j/ H. J            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
" y! b. z8 J7 |+ X           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
! `0 o) C  n, E! [% W9 D1 ?- }; x            //即-->那个人没有苹果往篮子里面放了, p, o* |4 j) {6 c
            while(fs.Read(data,0,data.Length)>0)0 X  ]6 I% |, e# J4 ~8 N6 J- d
            {
1 P6 Q# J; c0 N! `                fs2.Write(data,0,data.Length);
$ c' T, a% h8 B" |) \2 b                fs2.Flush();
" Z4 c5 d& g- |# f) V* g            }; M9 A9 t- k- x- u- F  y
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o..., X6 I( L$ T2 @% N* B4 k
            fs.Close();! v% F- L+ O( @1 M/ M2 k
            fs2.Close();
& [5 n3 e. x6 e% f2 F- ]        }2 t# c- B) L" ^

( }2 ]- x; g$ [; U3 V! l6 {2 k1 x" D6 v
C#内存流示例----->用内存流来读取图片1 f0 V1 o, B2 j9 n/ q9 `
C#文件处理操作必须先导入命名空间:using System.IO;
% {2 R, F1 R/ ~- a  K
; A. i4 X! j$ P7 |6 t+ M背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:! ?9 N. S; m+ }% \9 X

2 ]  ]% {! G( J& ~7 zprivate void pictureBox1_Click(object sender, EventArgs e)
9 |; ?: G6 o# O  I: x        {2 A. N& v& g# G( R6 |. S' J2 l. P
            //实例化一个打开文件对话框9 ^5 J5 _3 R  K2 Y% q
            OpenFileDialog op = new OpenFileDialog();
! |2 K4 a/ i4 B            //设置文件的类型3 d6 p) u5 R, J9 y$ k* I
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
. L6 R* e7 K) J3 B% n$ z# \  g            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:7 x: w- _0 h& m5 @+ W1 h3 ^
            if(op.ShowDialog()==DialogResult.OK); U. N% t# W, O: d2 k
            {
% j' A( @; N. S, U                //清空文本0 a, j! |, t* ]' P
                this.label1.Text = "";
. o7 }. R$ U. @: v                //实例化一个文件流) [5 Y8 G' A3 o9 @; N3 i
                FileStream fs = new FileStream(op.FileName, FileMode.Open);* w+ e4 k2 E0 F* M* l
                //把文件读取到字节数组
8 I$ {4 U- z, X% C; N4 S                byte[] data = new byte[fs.Length];
+ S( W7 P! ^3 D! c; f                fs.Read(data, 0, data.Length);
0 X8 q$ D8 y5 J6 w0 s8 A                fs.Close();
. J2 `& r4 ]0 u8 m- u7 ]: R% L% M" j
8 j) g! i2 F4 U! O; K% p2 z                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去3 Z) o# u* M$ R: p- M
                MemoryStream ms = new MemoryStream(data);# i$ i% }4 @9 B$ z% B) T" n
                //设置图片框 pictureBox1中的图片
- }2 W5 \; Z! X* D) ^" I; H( t1 Q                this.pictureBox1.Image = Image.FromStream(ms);
% \7 u; w) c  J            }
7 R; X& p6 K5 K2 v8 N& w5 q6 V; |- L) v6 X! ]. [% _1 g7 J+ L- h
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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