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

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

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

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

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

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

c#写文件
" ^+ o* M3 d7 o( l2 o: L- S6 O0 \( }. v
* F7 y* N, r) A' U: S5 K" i/ z& H- HC#文件处理操作必须先导入命名空间:using System.IO;
8 T* Y' I) F* q2 W# U) {//实现背景:一个文本框、一个按钮、VS20057 H; W5 K# V, Y; b' B* _. t' t

2 h0 k& A6 ]5 x3 Z1 |0 _方式一:用FileStream
2 J4 ?) }4 k& F5 R& A9 R4 T, D  h: I; x, z' ]. b8 e7 I
//实例化一个保存文件对话框
" d* N8 q  j+ u% a; B            SaveFileDialog sf = new SaveFileDialog();- v  e% ~" ^- `; e( I' |! j
            //设置文件保存类型+ \: C( ~& t  W  V, U
            sf.Filter = "txt文件|*.txt|所有文件|*.*";4 O/ j& P0 i1 f$ j' v1 c2 {2 C
            //如果用户没有输入扩展名,自动追加后缀
% q5 U7 X  L/ [7 Y) k0 b            sf.AddExtension = true;: S7 I9 I* i$ d4 Q+ L6 l
            //设置标题0 c! K; p  {5 g5 A
            sf.Title = "写文件";1 x. T1 c# ?" W6 {
            //如果用户点击了保存按钮
5 @- J) `: B5 U& X0 A% M; ~            if(sf.ShowDialog()==DialogResult.OK)# f4 d0 j9 N) u, x" A
            {
* ]$ ]5 \! c9 j/ u1 q& [: R& b                //实例化一个文件流--->与写入文件相关联' e9 j) f7 J# X" w/ g* ?6 B
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
4 A" W& U$ \% T: t, X# B                //获得字节数组* Z6 u+ x0 i1 _* [( `6 `# q9 h
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);* D6 n0 k3 z( {$ J7 V$ b* [  g. B5 c
                //开始写入
0 i  u" t2 Z+ z                fs.Write(data,0,data.Length);" k* a! V; R! N2 v8 I% A! K, Y
                //清空缓冲区、关闭流: ^, I9 @* N7 d# Q6 _9 V
                fs.Flush();, v8 \1 [1 F2 f) `! i( E
                fs.Close();
5 l  M2 t7 e$ F6 J1 i+ d
- H4 K0 r& _6 E" l8 c6 E            }
2 g0 Y4 o0 l5 N% F1 m8 b
; Z& x2 |: U  {& C+ `方式二:用StreamWriter8 S2 `' t+ N% Q( h. K% _
. [* E; U7 |3 b! r
//实例化一个保存文件对话框. ~% Y" x' g9 F& Q# F! L4 ~; z
            SaveFileDialog sf = new SaveFileDialog();
; a* f8 e8 o: G' M3 S! C$ c            //设置文件保存类型
& h: v* `% b9 G) K2 v2 A            sf.Filter = "txt文件|*.txt|所有文件|*.*";
6 h. C$ I8 X$ W! z9 |- Z            //如果用户没有输入扩展名,自动追加后缀8 b) U- s9 W$ v* l
            sf.AddExtension = true;# M. O+ `+ I' J; l" T
            //设置标题
$ E* U( D7 [4 Z" _            sf.Title = "写文件";) T0 f# E0 |' y) C. U
            //如果用户点击了保存按钮
1 \4 m$ i% V' P            if (sf.ShowDialog() == DialogResult.OK)& f" F( _7 `5 |1 h0 i( _
            {
* B; X. k; k* Q+ ^9 ?1 O" C" k                //实例化一个文件流--->与写入文件相关联9 ^9 X2 t, F7 M5 ]
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
' k/ K9 P! i# r/ g) e* K* W" y9 _                //实例化一个StreamWriter-->与fs相关联: M4 [8 O0 }; O7 q3 p
                StreamWriter sw = new StreamWriter(fs);
4 n, \4 {- M$ p/ B5 N: z; J. O+ t                //开始写入
! L, H/ Z; |/ m! s. J                sw.Write(this.textBox1.Text);7 J( h8 l8 b  q1 O
                //清空缓冲区
& o/ g# ]5 [$ }  w1 m                sw.Flush();) K( Q& m: T& a0 X3 A2 X8 x
                //关闭流
; S: y' m& |& v+ B& \# w                sw.Close();
. |/ h& D- U* g4 n+ d! r                fs.Close();
# A' B3 W9 ]% g! n; R' @  F0 M7 C            }
; n! M" m6 [" B9 b% V5 @& R" S8 r+ m. H" F  Y' c! ?
方式三:用BinaryWriter
; q7 w  L% U! p, v
  R" `( \0 c# Z. J- l! z//实例化一个保存文件对话框) j5 x( G# u0 r' O) ~
            SaveFileDialog sf = new SaveFileDialog();
5 S5 F6 s' P  G8 h; Y( X$ R            //设置文件保存类型  C$ s' G7 n+ o1 k) ~
            sf.Filter = "txt文件|*.txt|所有文件|*.*";3 ]  j3 [  D6 n( e% F2 R" I
            //如果用户没有输入扩展名,自动追加后缀' o% k7 E9 `+ Z  G3 L9 F
            sf.AddExtension = true;
7 W' x4 H# A% b' q5 h8 K            //设置标题
: ?% w+ m0 [3 V) x: f! @            sf.Title = "写文件";& Y) c( U& g9 ^4 \
            //如果用户点击了保存按钮! O- z1 L+ @: a  E
            if (sf.ShowDialog() == DialogResult.OK)
+ e9 c+ r) v9 g8 W; b1 c( K2 {            {2 U" w: m5 }1 E2 a9 N' E2 f5 a
                //实例化一个文件流--->与写入文件相关联% r: x, ^0 o, M. a: ?" e
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);: `, i  C/ V6 q1 v% B) a
                //实例化BinaryWriter
- o4 L$ G! @2 Z+ Y1 E  [0 D* O                BinaryWriter bw = new BinaryWriter(fs);" s9 n0 @1 P2 u5 O  B
                bw.Write(this.textBox1.Text);# G: I' d- u: `" X
                //清空缓冲区' P  o" H2 R$ x2 ^, R( [$ z
                bw.Flush();
4 R2 y: R$ m& e  E                //关闭流
! Z9 c3 _" z- _# P                bw.Close();; w( C9 w% o( e5 y* e! G3 ?
                fs.Close();
& E2 Y' s0 ^: n# L/ y% x            }
) v7 L" M. h! ]9 t
* v; b" s  a& b( @( gC#缓存流示例------>用缓存流复制文件
8 U7 R2 c! x% P+ U7 E: f5 m+ C: [* V8 o1 A/ }9 e
C#文件处理操作必须先导入命名空间:using System.IO;
, J9 L0 h! b; c8 Z" W& q
+ h; t* y5 H) R$ ?! \# i背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
5 G6 Z6 ]2 }; X! `' A4 c
7 d: n/ \4 H& \+ ^4 v" u在按钮的Click事件中添加如下代码:* V/ N/ @( o. F& F4 P" K/ t
* w2 P: F4 {9 G8 J& z
private void button1_Click(object sender, EventArgs e)
9 w5 l1 x  i  Y6 R        {
/ j. M" m8 h$ U0 ~# z( x1 f, _9 J$ L            //创建两个文件流 一个是源文件相关,另一个是要写入的文件% R- @- S$ g; n2 M( h
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);! ^# w/ B7 g  A* L' O, H; l# C
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
0 t" z$ X/ \9 q6 W            //创建一个字节数组,作为两者之间的媒介
. |5 c0 g& v0 t5 q. L  ^, U            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
4 D; o! W* {8 g" b            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,/ v$ h  G5 p# v$ |% w" ^
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
& c9 }" p* t. V- y. X            byte[] data = new byte[1024];) M1 o8 Z# p: \& b0 a6 m, [0 P
            //创建两个缓冲流,与两个文件流相关联
8 F0 Y8 ], f2 k/ |            BufferedStream bs = new BufferedStream(fs);
$ t3 l7 @; |1 e7 d6 t4 H9 u& _            BufferedStream bs2= new BufferedStream(fs2);( b0 p  }6 ?3 I( N5 p" W. Q. j; c
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了" V4 q8 y; m: R% z& d# h3 B3 |
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止  K. C% |- J$ C! }5 |1 }
            //即-->那个人没有苹果往篮子里面放了/ S* S  N5 Q( v* M, t2 t' k
            while(fs.Read(data,0,data.Length)>0), J8 F6 ]" s7 R
            {+ m( L. A# W0 r- S- |
                fs2.Write(data,0,data.Length);# r% @" P. d' k- o1 B6 [7 B$ z
                fs2.Flush();) U; h) D+ J2 a$ j
            }5 K( M. }/ F5 g+ \
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...3 H( j; F) K+ t; ]9 t
            fs.Close();$ n' `+ z0 ~/ Z1 L# z% S
            fs2.Close();5 A9 U2 h1 i2 z: @2 q% [
        }
  f: g' @) {5 U8 r: m0 l% ~
' @% f6 ]3 x+ ?2 C* L; ]! ^2 X8 ~- C) o: u, W4 G" \# C# [
C#内存流示例----->用内存流来读取图片: `8 Q2 ^5 A: x$ v" T
C#文件处理操作必须先导入命名空间:using System.IO;
) ]1 o) u5 m2 @/ d$ d4 r! o, h# P& T% K+ E3 H/ h; _" V
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:! r, ^& s! }' m0 \7 X6 C
' w$ s$ F8 X; ^4 w  ~3 ~. N
private void pictureBox1_Click(object sender, EventArgs e)
* r% ^$ o/ K1 s, r3 f        {
7 C4 N1 `: f1 E- t8 ?% _* n$ i            //实例化一个打开文件对话框
7 |/ I  o. K* k- d: L% B            OpenFileDialog op = new OpenFileDialog();" W0 j( T  b$ H7 q& o! y
            //设置文件的类型- l- c6 b  l4 @$ q
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";" O9 E- }5 Y+ y. h7 f7 S
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:% S9 O# I2 o0 @, z; E2 |: T# C4 L
            if(op.ShowDialog()==DialogResult.OK)
. O+ D! ^9 `  y  Q3 h8 G5 V$ s            {
$ {' d: o' _5 i) r                //清空文本
1 }3 ]; R3 @& u6 H                this.label1.Text = "";& Z2 d; C8 i# K+ u; y% Y( ^' B: V
                //实例化一个文件流
& \% H6 P5 o) {/ {9 [2 M                FileStream fs = new FileStream(op.FileName, FileMode.Open);( h) |! D# P0 R/ H
                //把文件读取到字节数组" W- t8 b/ Y+ o2 ]& L7 `7 J
                byte[] data = new byte[fs.Length];$ k; u! C, b2 W9 H* x' T
                fs.Read(data, 0, data.Length);
" f! b& t2 o7 [                fs.Close();  C% c7 m% a, x
0 q8 n! X8 ]3 V: n8 t. M: z
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
  w- g7 j0 L* }  f/ O. K                MemoryStream ms = new MemoryStream(data);
. d- j$ V- T0 P- H  C9 |                //设置图片框 pictureBox1中的图片
5 ?  W/ _. k4 Z& D                this.pictureBox1.Image = Image.FromStream(ms);
% `4 l2 m* f* X7 Y5 a            }
# d" L$ h% s3 |* V9 @4 B8 T  Y/ ~  ]) P4 h: `/ G% t4 B3 M2 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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