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

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

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

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

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

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

c#写文件
9 V9 ^7 k2 a. f% q- `1 I0 a; R" _, [& h
C#文件处理操作必须先导入命名空间:using System.IO;
* Y% |/ k- `! r7 F( K  a6 u- y; X9 v//实现背景:一个文本框、一个按钮、VS2005
9 Z1 Y3 b! e. K1 R+ W
9 g9 F. ^2 E  q3 Z$ G% w6 p方式一:用FileStream
6 }6 S" p2 @3 e
$ B# C  ^" A& P2 _1 I//实例化一个保存文件对话框, p8 N/ N9 U% q
            SaveFileDialog sf = new SaveFileDialog();
% [) J& }' N( M& a            //设置文件保存类型
  ]% L+ I' S0 \1 X            sf.Filter = "txt文件|*.txt|所有文件|*.*";
/ A0 L5 }( N) c& `% V8 ^            //如果用户没有输入扩展名,自动追加后缀; @+ L" ]# ^: H2 w5 z
            sf.AddExtension = true;
! C* n6 U( j6 H7 v            //设置标题" f7 w" D7 @3 D% E
            sf.Title = "写文件";
# ^. a! I% O5 C2 E2 o8 l$ b            //如果用户点击了保存按钮
" @) l; F5 F+ [0 \5 V& x5 K4 Z            if(sf.ShowDialog()==DialogResult.OK)
( D$ u9 k# z6 J( v! D' |! D% L# S            {" R" P9 ~, R/ u8 b
                //实例化一个文件流--->与写入文件相关联% \* z3 r9 }4 \- v  h
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);+ K$ @3 S0 Y7 W
                //获得字节数组# w# I4 ?% w9 b6 ?- O) _& m
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
% U, B; W# V( c: _                //开始写入
: k6 m0 _. }2 G                fs.Write(data,0,data.Length);# k' S6 S6 j$ Y6 ~8 G1 C
                //清空缓冲区、关闭流/ @/ ~, B! h1 I6 E
                fs.Flush();% d' K: N" k5 U( o# g! e" P
                fs.Close();: x& M* w* C- Y/ N

9 {: S/ p0 o, D, N2 `; J' k            }% g, S. d; z0 u. J

$ P& E. T7 U: [; ~6 [$ {  e2 f方式二:用StreamWriter/ P. `# {) `- w
  Z! i/ c$ R$ t& O$ J# j# ?
//实例化一个保存文件对话框/ @/ n1 {& j& U) m" b0 E3 \
            SaveFileDialog sf = new SaveFileDialog();3 v( Y/ D- a$ C+ B/ h/ s6 Z6 V" m
            //设置文件保存类型' R; o/ G2 m. X+ R0 }8 K
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
% z& s! O( G2 L4 y6 ~            //如果用户没有输入扩展名,自动追加后缀7 M0 x- T& h) _) u! ]7 {+ x
            sf.AddExtension = true;: S  Z) [# u" {$ u
            //设置标题
3 W5 v' r' `3 |5 z% X% L            sf.Title = "写文件";' V4 @. r5 ?  x& g
            //如果用户点击了保存按钮
5 T& Y. w; P$ t5 g, @# ]" Q7 ]. T+ i            if (sf.ShowDialog() == DialogResult.OK)# C7 G8 ]) _1 I$ a
            {
0 W5 }1 I$ E: m* K+ G/ l$ F4 n% [2 Q' }                //实例化一个文件流--->与写入文件相关联2 t8 t% _+ o6 n8 R
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
( ]7 k" [! G( K                //实例化一个StreamWriter-->与fs相关联
  M' f1 S; E% ^5 Q2 E9 J* }" f# ]. F                StreamWriter sw = new StreamWriter(fs);: m  t' `1 ?2 A4 Z8 V
                //开始写入
. O. u8 z- c! d0 q* Y$ h                sw.Write(this.textBox1.Text);
$ S( b4 O( y: ?                //清空缓冲区
1 O! T, w9 t9 ?& u: M6 F1 g* q                sw.Flush();
3 g7 v% h7 \, v& U                //关闭流
+ J7 f7 T! g+ ~                sw.Close();
8 V) K# @. c% v! }2 h                fs.Close();( }0 F" M; O$ D6 T1 e
            }7 o3 g; w* k9 l$ _/ [
7 G$ o9 ?7 y- {& x
方式三:用BinaryWriter
1 D4 R; J, Q: Y, B2 p
3 S( U4 V: E7 g$ Y! `//实例化一个保存文件对话框
; g( c' u( n& ?9 H! ~            SaveFileDialog sf = new SaveFileDialog();; ~% s5 {, K( y
            //设置文件保存类型
0 H1 f! }! `8 g            sf.Filter = "txt文件|*.txt|所有文件|*.*";2 P  _; C2 A. h1 b/ O+ P
            //如果用户没有输入扩展名,自动追加后缀2 ]  o# l2 G$ k3 \
            sf.AddExtension = true;
  ]) Y" v9 N; S4 x1 i! f1 [4 x            //设置标题# `% {& f. h- Q: {6 Z7 t
            sf.Title = "写文件";( o! P! ]9 t. E
            //如果用户点击了保存按钮1 m- g+ @- q( e( d& `" g+ P, `
            if (sf.ShowDialog() == DialogResult.OK)$ A8 o* z' h$ F
            {" S1 |4 Q* C/ w- b7 i& s4 m5 b: _* q
                //实例化一个文件流--->与写入文件相关联& h' P9 \1 B3 e6 J2 _0 }' G
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
7 P* i. x, X% A! f1 W2 H* t4 ?                //实例化BinaryWriter
( E' S8 J; Z4 I3 {3 d                BinaryWriter bw = new BinaryWriter(fs);
' N4 P9 c& G) s" j3 G  _' x                bw.Write(this.textBox1.Text);
# I! M2 W# P  h  [' r9 I! O" _0 _                //清空缓冲区
  Z8 H3 s% _, p: B4 t+ ?( i8 O                bw.Flush();
6 e; g% ]0 h) W+ O8 w" U) U                //关闭流
7 }# b# Y4 V, L! b4 J9 l                bw.Close();/ H# c0 k! d+ a) e% o) Q
                fs.Close();) _: N1 R' @2 {) a
            }
8 g3 a  U* i1 h( K# E- Q( |5 }1 i- r$ l5 M8 {: K' k
C#缓存流示例------>用缓存流复制文件( R4 l+ Q1 H- i  ~; D% Y4 y

$ b% i/ V8 L% GC#文件处理操作必须先导入命名空间:using System.IO;
% U. c3 c. c( |* z: A7 t+ h# H  W, U% [4 m
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
' }4 n5 l$ u: F  u1 F- p* F8 k$ C: Y* e" y0 r
在按钮的Click事件中添加如下代码:# y- t' k& A7 {( B8 r

% {& j6 }. q+ U3 P3 ?: c5 Mprivate void button1_Click(object sender, EventArgs e)' M8 I) |2 F- k9 h0 t. q( x8 p
        {" C1 c2 a/ `1 O' C! J
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件" |# T' u9 k) o) M5 S
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);4 u9 R2 k4 G; N/ N) D) G
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);0 w$ W3 L9 j& z5 w4 f2 X
            //创建一个字节数组,作为两者之间的媒介
. L; ]/ }" w1 o0 \# G" g            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
& @# Q. W3 X9 |. s# @7 P' E5 }            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
3 q( G  u) U6 T" w1 ]: t7 b2 B2 B/ b            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
/ e' W" v$ \% v! j' {& {: R1 t1 ~            byte[] data = new byte[1024];
$ G& z7 V( K/ ^. F0 Y4 a6 e: w            //创建两个缓冲流,与两个文件流相关联2 c" W, c: x  B1 h
            BufferedStream bs = new BufferedStream(fs);
6 C1 s% V, w6 H# N7 L            BufferedStream bs2= new BufferedStream(fs2);
1 N' [# q2 W0 M7 a# @& \            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了9 k+ s" n( i& @2 |
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止( ?! B0 e& D; t/ ^/ {/ y, a
            //即-->那个人没有苹果往篮子里面放了3 ]- a9 o- E  p% ]8 ?; m( Q* L
            while(fs.Read(data,0,data.Length)>0)& g' O. F4 j$ h0 i' |) K0 U
            {
" B, Q* `) G# D" [* M6 g$ A                fs2.Write(data,0,data.Length);% A9 C: l( l# U: |8 `
                fs2.Flush();
& m( n: J3 w9 z6 ]3 ^: n            }5 q7 N, o4 C6 o3 e4 L" ^. P
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...( z. M: p( O/ M+ N3 ?- Q
            fs.Close();
9 X3 u1 x; R" ?2 W            fs2.Close();: V1 I' ]6 P3 @- H# i
        }  b/ Y! `) W9 A( r+ g4 B

  W' Q  R, _1 |8 a7 @" l" A0 \8 [2 `, r
C#内存流示例----->用内存流来读取图片
5 H9 i# P8 G1 Q8 ]6 s5 s7 ?C#文件处理操作必须先导入命名空间:using System.IO;
% Z8 F8 [# \5 d2 S! c- D/ z' c4 J2 Z4 Y5 v$ H" s& L; v2 r% b
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
2 ?# a: \' x, w
6 g% a( L* N6 `% c6 M- n: bprivate void pictureBox1_Click(object sender, EventArgs e); y9 y$ Z. v; P
        {& n% f+ J. ?5 a- H
            //实例化一个打开文件对话框/ f( Q: P4 R0 L3 |/ R
            OpenFileDialog op = new OpenFileDialog();: I: O8 j9 K8 f( W; b+ g" V
            //设置文件的类型. e) S) ~5 ^: h& p* S) W
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";4 S- f' d2 n  t4 ]0 c
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
2 X2 ]4 [! a2 _7 t, a+ ^4 G            if(op.ShowDialog()==DialogResult.OK)& e) g3 \( U: d: {+ k' w
            {8 r$ e$ d. S3 E: J' ^% D
                //清空文本3 X( o4 x$ a- _' ~3 ?8 f1 K
                this.label1.Text = "";
* p' o1 j& }" h0 g% _4 \/ u                //实例化一个文件流
0 ]5 v  `* _" l# r. d5 G5 o6 O                FileStream fs = new FileStream(op.FileName, FileMode.Open);
- T# r9 K: i) A3 x                //把文件读取到字节数组
3 d# x! }7 \+ k1 F0 |+ S, r4 }6 e                byte[] data = new byte[fs.Length];5 ^6 ^5 v" L. i" V
                fs.Read(data, 0, data.Length);
  t# h7 [  [* Q3 d3 a                fs.Close();4 h% G, X1 l7 A  w! N8 ~
3 i! Y9 \6 [+ E( f* R  R
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去% p# u6 S' b# M( X
                MemoryStream ms = new MemoryStream(data);* t- ?+ Z1 G; [% d
                //设置图片框 pictureBox1中的图片5 r$ `; H: w! W7 P2 r
                this.pictureBox1.Image = Image.FromStream(ms);1 _9 F. {" N% d& |  r) p4 J# h& R
            }3 P& i- a& h- c+ Q0 O5 U- |, |0 O  F( Y

4 q+ H$ o, b9 B        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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