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

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

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

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

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

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

c#写文件
) k9 t, `2 \$ C: n( r) S  }# S( V, @/ _
C#文件处理操作必须先导入命名空间:using System.IO; 7 _2 V: H0 |) V# Y6 h4 P# D8 e
//实现背景:一个文本框、一个按钮、VS2005. E5 L8 u! T4 P/ G( H& |& Q; s

7 o9 ~9 p+ q1 N# B" X方式一:用FileStream
! ?% n$ W8 [: p; G$ {' I2 B* I
& L: h3 e& A7 p* g//实例化一个保存文件对话框
# ?; g/ K7 R; J9 k' ^. p3 Z            SaveFileDialog sf = new SaveFileDialog();
( w* ~; }1 j6 p8 J2 S  ~: }            //设置文件保存类型. k) n+ A. C5 D6 _/ S! l6 k
            sf.Filter = "txt文件|*.txt|所有文件|*.*";2 K4 k2 k! P' T9 D$ ]0 E
            //如果用户没有输入扩展名,自动追加后缀
1 b! p$ U3 H# v1 \- B' c/ ^) f) w            sf.AddExtension = true;
0 }8 ?" K# B: p2 E4 z3 }            //设置标题( S% y8 c) X; }; O
            sf.Title = "写文件";
! X2 Q2 D6 C$ c, i. X  a            //如果用户点击了保存按钮
1 C9 F/ W, D: [& y8 ]- ~            if(sf.ShowDialog()==DialogResult.OK)
5 B1 E# X$ L: C8 t( l9 t3 B            {
3 W& h3 h- `/ O- k4 q                //实例化一个文件流--->与写入文件相关联
4 F8 }) h& V1 V- ^7 _7 o& m                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
1 p  Z1 u2 b( \                //获得字节数组4 k6 u) ~+ G' A1 o! U! H1 q
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);0 n# |) a+ E  x6 ]( j
                //开始写入
9 P/ B2 U8 O- K                fs.Write(data,0,data.Length);
7 ]/ D% i9 s* d% H  K" S  f. @                //清空缓冲区、关闭流' G' ~- `3 F. m" |: @& [, ~! l1 O: v
                fs.Flush();8 |: K) S2 v% g* O
                fs.Close();2 V5 u$ Y4 e! g9 h* `
' D* t. M& L; f. y. d+ U0 k3 S" d
            }
: T3 l$ P% g0 V2 V+ o  ]1 k% I, Z. v3 ~; t) G
方式二:用StreamWriter: L  N& A' R3 |' k- e. n+ l
" D6 K: `! L+ d  R) l3 Z3 j, L
//实例化一个保存文件对话框
0 s8 Y  O& P. a: q, h1 `            SaveFileDialog sf = new SaveFileDialog();
$ N0 x1 p# E( e3 a& ?0 T            //设置文件保存类型
. H- t. s$ A% z1 m( z- Y& W            sf.Filter = "txt文件|*.txt|所有文件|*.*";
4 s: c/ ]- |% M# c/ E1 m            //如果用户没有输入扩展名,自动追加后缀5 d' c+ [  F! K; p2 _' \) u$ i3 T
            sf.AddExtension = true;- L7 z9 R! V* Q: V1 ^
            //设置标题
1 b4 S0 {, `* Z1 ?. n            sf.Title = "写文件";4 j. {2 t' L+ w6 y7 U" C. n3 L
            //如果用户点击了保存按钮
: Q' b6 q. Z) a0 h            if (sf.ShowDialog() == DialogResult.OK). V  {8 l1 N; x: I+ c  Q+ Y/ A# R
            {
/ H+ c3 J8 _5 Z+ n8 @                //实例化一个文件流--->与写入文件相关联
: m: \% u; l, |                FileStream fs = new FileStream(sf.FileName, FileMode.Create);) ?$ P0 S- R0 z% h" l
                //实例化一个StreamWriter-->与fs相关联$ ]1 ^2 {. F+ N/ z2 D- E4 A9 L5 n
                StreamWriter sw = new StreamWriter(fs);6 h3 Z5 }7 Q+ r( w5 r; Z0 d% g
                //开始写入
" `; A8 N7 k! f/ W5 P: U. k                sw.Write(this.textBox1.Text);% g9 c  _8 g7 N( ~) q3 a0 N
                //清空缓冲区
& I% ?" E2 E, O+ p                sw.Flush();
0 }6 W4 |8 `$ \1 W. H                //关闭流
! u1 F. u3 h" X5 R! f6 w9 Y                sw.Close();( u* Z9 u! q( m
                fs.Close();" M  z; ]$ w+ g$ l. J: b. t
            }* N8 C& v" @  a/ ^' k$ _

5 P6 r& E% X% d: ^& @方式三:用BinaryWriter
% ^) Q6 M$ J5 F9 K. j3 G
7 Y6 x& A1 `7 M/ b' u  {( h* V//实例化一个保存文件对话框
4 [0 R6 ~1 G6 k5 c5 w6 i            SaveFileDialog sf = new SaveFileDialog();: N- u8 D1 S3 d. ?' j$ H
            //设置文件保存类型
, n8 X% Z) x% J: V/ f0 F* A- e            sf.Filter = "txt文件|*.txt|所有文件|*.*";
3 a" L  R" N, @& n( i- M& ^            //如果用户没有输入扩展名,自动追加后缀
- Q' w  V7 W7 x+ x" \            sf.AddExtension = true;8 h6 _* ~# Z: q& M: [4 M# t
            //设置标题8 s- a/ Z4 t# D9 Y7 {/ T* f
            sf.Title = "写文件";0 J# S( r8 ]2 Q3 X
            //如果用户点击了保存按钮- ~+ U$ {5 t) o9 ]# b9 l: O
            if (sf.ShowDialog() == DialogResult.OK)* V3 y( Q4 ?4 \, n. ~
            {
/ x7 ~8 Q! J: H9 w                //实例化一个文件流--->与写入文件相关联! n4 w4 t) k7 D; t/ P  l$ f
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);2 Z8 C# [( _' k4 K: ]3 h
                //实例化BinaryWriter3 r. S% y, n5 w. H) i
                BinaryWriter bw = new BinaryWriter(fs);* P; ^! u8 x7 [2 x' f& F3 p
                bw.Write(this.textBox1.Text);3 @. }- x1 o1 F7 J% X" o
                //清空缓冲区
" {+ {0 s0 r; r/ N% g                bw.Flush();7 f% U, S) @2 {+ ?2 D' I! C
                //关闭流) s. b( r2 t* X0 Q
                bw.Close();
3 |  d# t  Y: O9 z# ^# n( a7 i                fs.Close();9 [) J+ Q( c7 V, b- A+ x
            }
% z6 _7 ^3 g/ ?+ P
. P1 k, s) K$ M( g" mC#缓存流示例------>用缓存流复制文件( m: m1 ^8 ]8 [) h2 r$ T* v9 a

6 P+ s! l1 w2 F+ J3 kC#文件处理操作必须先导入命名空间:using System.IO;4 t, o, K6 U1 a, E
5 c' u; |5 [4 I. g* n' |& B
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
9 u3 o/ Y6 _8 c% x$ ?+ h5 M+ }2 x
; _$ p7 b9 [' G& c0 O& P4 N8 V在按钮的Click事件中添加如下代码:
, D8 T1 c/ V$ r  J
  i# Q0 H8 p- q2 z" H: Y4 Z' W5 Hprivate void button1_Click(object sender, EventArgs e)1 O7 X0 }% ?. |8 v2 D) M
        {
6 X/ [8 `0 H$ B4 p+ z9 j' S            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
' \# X: T4 W5 t# _; m. I7 o1 V            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);2 t: r  E/ W! }4 s  _/ Y, ^
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);! d0 B9 z7 }; v' T
            //创建一个字节数组,作为两者之间的媒介+ A# {5 v/ b  i7 P3 v1 K7 h
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
" T0 Q2 I# i( m# P0 U$ u            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,: c9 B) S0 @' Z, V) t5 ~  \
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
- P# \7 D6 X9 ^4 b. O+ ]            byte[] data = new byte[1024];5 m. \$ N3 \/ m% i* g& o
            //创建两个缓冲流,与两个文件流相关联
8 j, A7 e$ x; \. g' o0 N            BufferedStream bs = new BufferedStream(fs);
8 b5 ?6 Y2 |- W) j            BufferedStream bs2= new BufferedStream(fs2);: j5 y$ X& m; ^4 a; B+ F
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
" \+ b; \+ \9 G: `& P# N. [9 c0 I* q           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
+ v2 e1 ?" W$ W8 B6 u; X            //即-->那个人没有苹果往篮子里面放了. M- Y2 N$ e7 |, S
            while(fs.Read(data,0,data.Length)>0)
4 K- W3 l' E& \3 f% @0 q' G. d  F            {  X5 C! V9 x/ a7 o+ ]4 w' `/ I
                fs2.Write(data,0,data.Length);4 Q. C2 a5 }% p* ?6 o
                fs2.Flush();
6 m. D2 D& e! ?2 c0 U1 s8 {+ H            }
3 l* u' J: m5 L# B  \6 x# t            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...4 {* U8 k) J! r4 [$ d* r" [- n9 J. W
            fs.Close();
7 f* ?5 }! V# B            fs2.Close();* G# S8 L9 [9 u' _; g& H8 B3 _
        }# N/ o1 k: S4 R6 ~4 Z, u5 o6 ]
6 N( D8 H/ j% [% M! {: ?$ j1 L
1 s5 f5 ~( ^7 P$ j/ U$ W$ |7 e
C#内存流示例----->用内存流来读取图片7 P0 I. D! v+ k$ B- ^' F
C#文件处理操作必须先导入命名空间:using System.IO;" q' w9 d/ L# ]  \
+ Y; }: U8 w' H+ |8 Z& b# T
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:) D0 J! y6 C9 R* E, Q' s1 _
" y5 v6 M- Q- C! c1 y, T6 y
private void pictureBox1_Click(object sender, EventArgs e)4 A+ m3 s4 @7 @, d0 Q
        {
* {+ `+ g" @$ A3 P5 X            //实例化一个打开文件对话框* N5 G) l& o1 n7 O7 {9 `7 l
            OpenFileDialog op = new OpenFileDialog();4 u0 n1 V  ^- }$ r4 o
            //设置文件的类型
3 J. |  r4 a( w4 Q            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";- t( f6 d! Z' c* Y, x# v8 A9 @
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:% G' E$ X% E! I$ s2 r0 S
            if(op.ShowDialog()==DialogResult.OK)
( H; H  y1 R; l% W            {) v3 Z8 s4 T7 E, D/ n! Z9 v4 E
                //清空文本
% [! z- q! p) m# B                this.label1.Text = "";% S$ {6 _- m* A0 i3 K# \
                //实例化一个文件流
, G, B9 [- g. ^5 j$ S' e' `7 [# o                FileStream fs = new FileStream(op.FileName, FileMode.Open);/ }# b$ y6 t; g3 o& `% U! m
                //把文件读取到字节数组+ P8 z3 Y) I5 Y" W6 f* z+ ?
                byte[] data = new byte[fs.Length];
$ h. |, x5 e' r  h3 G                fs.Read(data, 0, data.Length);
6 o9 k# W4 @/ O) Q                fs.Close();/ ]4 p! ]# M0 c, X' Y: q" I
8 V) _# p4 G% P3 d1 d4 @! A0 c
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去4 N2 W4 E7 s8 T6 \7 x6 n" b$ v5 `
                MemoryStream ms = new MemoryStream(data);! |( d# d( p: w1 l
                //设置图片框 pictureBox1中的图片
8 S( k5 O- D1 V8 i5 e                this.pictureBox1.Image = Image.FromStream(ms);, \0 X1 }2 h/ A! e
            }% Q* W4 g8 I# `9 T8 M! o7 Z
  _. t( W9 M; }. w: [
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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