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

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

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

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

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

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

c#写文件8 x7 }: @+ B, F! n

3 X- Q6 `/ X2 Q& x% C3 `C#文件处理操作必须先导入命名空间:using System.IO;
. q7 O4 }' q. e. t//实现背景:一个文本框、一个按钮、VS2005
* [1 R# X) k) u" `5 `
9 ^& }8 I& P. A6 i方式一:用FileStream
& ^  P  J: }& _! T0 }
4 d1 h, o9 V& I//实例化一个保存文件对话框+ k1 x6 Y  `) k: Z! L' N
            SaveFileDialog sf = new SaveFileDialog();+ n4 P" k" S9 n9 ~3 B4 i3 @) @
            //设置文件保存类型/ S2 O5 o. c9 c3 b+ O+ B
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
" f8 q. ~* [7 c+ q5 n, w            //如果用户没有输入扩展名,自动追加后缀2 {$ y; @6 A1 o8 u, O! q/ L/ i) O7 p
            sf.AddExtension = true;3 o# }" |4 G8 h" V7 ^
            //设置标题8 @( f2 f3 S# H2 P6 U# x0 v
            sf.Title = "写文件";
5 J$ i5 b2 T4 t; G" w6 [+ x' k* Z' ?            //如果用户点击了保存按钮
3 n. U% F' E) ^- a: A3 G8 c4 p            if(sf.ShowDialog()==DialogResult.OK)
* g& J& h; l; R* j4 v2 a2 C            {
. l0 Z8 t: C6 v4 @( U8 d& K                //实例化一个文件流--->与写入文件相关联
' o' {+ }& \3 L* Q                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
. W9 q$ w) t: V                //获得字节数组. n+ \$ g" _4 Z& g# j0 f3 {: V8 N  V
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);, @- L! i/ S6 x" `6 `" R9 v3 {1 T: K
                //开始写入
2 O* ]1 G; Y$ U8 i: f+ u# O/ q! U                fs.Write(data,0,data.Length);
0 l5 h1 l3 A& m                //清空缓冲区、关闭流
) \: o4 t& n! \$ g; u                fs.Flush();1 {2 U  Z! K$ w' R. U3 j" @* ^: D& i
                fs.Close();
5 F+ U4 v6 T4 z. X( b4 B* x: W( n" z, k3 u! ~) Z  i  S: L
            }1 T, v7 E" J% y0 z- G

3 Q- F: T  e9 U方式二:用StreamWriter) {9 a' L& ]$ _+ e
5 [$ f4 ^' E" a8 P
//实例化一个保存文件对话框
' ^9 i* H. s% t' X4 ~+ O% D            SaveFileDialog sf = new SaveFileDialog();9 i; k9 w; {3 N$ t, T
            //设置文件保存类型- v/ b: e# H& N5 ~
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
+ {/ z  R/ m+ k+ g            //如果用户没有输入扩展名,自动追加后缀, p7 T/ [0 I0 T. v% }0 a8 v
            sf.AddExtension = true;9 J+ V0 h- t% s; O
            //设置标题$ r: y! A, S; t' s- i& ]6 e% |; j
            sf.Title = "写文件";
8 j) L  h) a9 U            //如果用户点击了保存按钮
5 y; h  g* v7 T2 ?            if (sf.ShowDialog() == DialogResult.OK)
3 C: b8 M2 ]% C4 Y, X! j& u7 ]            {% t% m$ R& m3 D1 E7 c% i* r
                //实例化一个文件流--->与写入文件相关联( }8 V) |  g* {  p) c
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
& c* ~$ s3 Z6 e  W2 L( u                //实例化一个StreamWriter-->与fs相关联2 Y! {3 t6 P7 @! ]& U- A, S
                StreamWriter sw = new StreamWriter(fs);6 l. Z6 Z& p6 r2 t" e
                //开始写入
; k2 }1 U7 N2 u1 h, p$ {                sw.Write(this.textBox1.Text);
8 p2 {$ e5 L8 n3 @4 {7 H3 y                //清空缓冲区/ s- i5 k0 e- U& J
                sw.Flush();/ k7 `6 s0 r$ z" @5 S8 x- E% h' d+ E
                //关闭流
. a" }0 o; R% [4 {9 b% Y  L                sw.Close();
, B, v/ E, i# V* _& u& \                fs.Close();0 B* o+ y( P' {4 u& s7 m0 j6 V: Y# F
            }
- w/ R' |4 k  V$ U0 N, }0 W% g4 O$ v/ u
方式三:用BinaryWriter
$ G" l; M# A! L0 x* S, q7 E; C6 q8 e9 g: N
//实例化一个保存文件对话框) I+ r' u& B3 Y) z: S2 H
            SaveFileDialog sf = new SaveFileDialog();* ?$ Q, V% A, y  D5 d( F# I9 ~
            //设置文件保存类型& a1 C3 j# I0 [) j
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
) c- Z0 Q; {2 i6 g. _. x8 J            //如果用户没有输入扩展名,自动追加后缀
+ n: h1 `6 {4 ?* F            sf.AddExtension = true;
1 X# k6 l0 E) X' w( m# Y            //设置标题. X1 L$ ^8 S& D) |7 ?1 S8 \
            sf.Title = "写文件";! d! X* [$ D  \7 X9 H# \$ Z4 S
            //如果用户点击了保存按钮1 t: ?4 C& o0 U, P% o
            if (sf.ShowDialog() == DialogResult.OK)) n8 d6 E; h/ n' l9 s, Z4 }1 I* \4 P
            {
8 w% p9 P2 c( F  U                //实例化一个文件流--->与写入文件相关联# ^8 c* n+ M) Q6 i& n/ [
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);- q; B% u& \$ B8 J  k! Z5 J; w
                //实例化BinaryWriter2 `9 ]# G1 y' t; r3 G& J% A
                BinaryWriter bw = new BinaryWriter(fs);
2 y5 K4 F+ K) T& N; `                bw.Write(this.textBox1.Text);0 a: s* [- ^+ b: E& k
                //清空缓冲区
; ^9 W+ v" L/ f, I* a+ {; [0 ]' F                bw.Flush();
7 i  p1 P, g# c2 R. g% n  {' x$ f                //关闭流
* k. d5 z) z) C                bw.Close();. a# m0 A0 b9 k3 h8 K0 D
                fs.Close();
! r& ?4 r& p0 a% e            }+ _4 V% ]& G. b! u9 h7 ]# F
: H/ }1 @( q& h! O+ z, s+ D
C#缓存流示例------>用缓存流复制文件7 l1 c& D( J. D2 t1 U1 G! u1 U+ Y! I

2 H6 [% c9 p! `# DC#文件处理操作必须先导入命名空间:using System.IO;
2 M8 c7 g" A* S1 L0 c
, m# V+ `% e) I3 _背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
; M0 ~0 i" t) x5 y% N; E& N8 Q8 B; D! a( z7 q
在按钮的Click事件中添加如下代码:
% c( R6 D4 z) M; w
: c' c' f. I' t0 Oprivate void button1_Click(object sender, EventArgs e)
# @" N& j" K( ]# Z9 G        {! K' }; L" N% v" s; d' I5 b. \
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件8 v1 q% |3 [; I
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);# P6 Q: _) M  Q: C& ~6 P
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);6 e& F5 Q5 N4 P$ L' x' N
            //创建一个字节数组,作为两者之间的媒介% k: s- _# _9 Y9 p( i8 ]
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,0 t. T+ z+ U; |/ \% q- h9 ?: E
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,7 K$ C( D( Z2 m' u' L( s" v
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率, a* h$ @7 j$ ]: R) z
            byte[] data = new byte[1024];& k9 E8 v. O4 C1 F
            //创建两个缓冲流,与两个文件流相关联
1 j& v/ t% N$ h" D" y            BufferedStream bs = new BufferedStream(fs);8 U( c$ \( S& {. i9 S* ?, V, \0 J$ _) h
            BufferedStream bs2= new BufferedStream(fs2);7 s- `: N* w! g1 S" [
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了3 q* g5 Z0 I5 J" N+ |$ {1 X" |
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止* M3 T+ y( C* D# \% @
            //即-->那个人没有苹果往篮子里面放了
; U! K- B6 `/ X1 C) C- g% `: h7 `            while(fs.Read(data,0,data.Length)>0)9 Z7 d: ]. ~4 k' K# C
            {
& ^, ?' g+ u0 C9 c7 H                fs2.Write(data,0,data.Length);
4 ?2 n6 i, {8 |8 V, g) K0 R                fs2.Flush();9 N  B# |: K9 x. I9 e2 `9 v) a0 g
            }7 A( b- O" y7 z8 u  N
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
9 g; B0 o. M6 t            fs.Close();
9 ^% I& n, L% ~& v            fs2.Close();# Z2 ?7 U4 O5 V1 H
        }
2 r. c3 \: |7 Q. b4 F7 ^  C
1 L5 s3 _  [% D& I' x: V( Y. }
/ \6 b( `0 F- i0 xC#内存流示例----->用内存流来读取图片7 z8 i1 {5 m& x4 @  \$ l# }
C#文件处理操作必须先导入命名空间:using System.IO;8 D( A8 n" F+ X
) B3 V: c  J3 v# H4 b5 E
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
  m6 a% ?- e+ Y: ]8 {
1 `. v; H8 S4 {, a8 pprivate void pictureBox1_Click(object sender, EventArgs e)
! ^* H0 ]0 U' B7 U/ ]$ a& Z  l/ d9 v        {8 m3 H) q! @" ]1 L# [; ^2 G5 E; B
            //实例化一个打开文件对话框# n. u% t2 x* p( i
            OpenFileDialog op = new OpenFileDialog();
& M7 z5 [* A) I9 d: H  B            //设置文件的类型
! R% |, D+ Q/ M* P            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
$ U8 ?7 ^' M  y1 Z9 w            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:# T% @! N: l8 ^9 }% o8 C
            if(op.ShowDialog()==DialogResult.OK)
) w: t; l) i( T$ a/ @            {
. h7 t* w2 |: g# U9 E2 y                //清空文本
  o$ H8 G9 k* N; @1 `2 K. g: ]                this.label1.Text = "";
8 h9 m+ Y8 o5 J- K: J! @                //实例化一个文件流# x3 s' P6 y2 g4 J7 \
                FileStream fs = new FileStream(op.FileName, FileMode.Open);
* ]; z8 c( F+ S# b                //把文件读取到字节数组
1 d7 z# j' I5 \5 W5 N                byte[] data = new byte[fs.Length];1 ^$ H" V( b, a% |3 W& q
                fs.Read(data, 0, data.Length);
" O% S8 \! r5 s4 z3 n9 I                fs.Close();' X7 t' u1 ^1 j/ h6 a' f- X5 K
, d' E! R; f2 C$ @) @! g8 G7 `7 c  G
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
7 |% ~4 m4 H, [0 F3 r' F                MemoryStream ms = new MemoryStream(data);* _7 }% U" Q* w/ d6 F
                //设置图片框 pictureBox1中的图片
6 @3 q: S" ~' J                this.pictureBox1.Image = Image.FromStream(ms);
% f) d2 d0 ?" h7 S% S7 S- e            }9 {/ t0 e  N$ S1 ]$ H5 B
& t9 j6 j" m; _' {) _
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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