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

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

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

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

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

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

c#写文件2 @1 D5 H# W" h" U

# T+ q& k: r/ }C#文件处理操作必须先导入命名空间:using System.IO;
% o) v! f4 u& v/ [/ O/ W! D//实现背景:一个文本框、一个按钮、VS2005
  u) a4 V3 Q+ G  ^7 U7 @2 q8 m; q" ?  t
方式一:用FileStream1 U. C# Q6 ]! Y, b% w% {# Q
: |9 D# c2 e  [) g5 f8 I+ \5 M! P8 D% t
//实例化一个保存文件对话框
2 p8 L! \! E( p1 l% Q0 v            SaveFileDialog sf = new SaveFileDialog();
( t  u: G; n/ O' z* z) ?4 i  }            //设置文件保存类型( ~9 G" ~5 X5 y' {
            sf.Filter = "txt文件|*.txt|所有文件|*.*";" H# @5 m7 C. {1 H% u7 U4 P8 |
            //如果用户没有输入扩展名,自动追加后缀/ {; V3 a) P; w1 o
            sf.AddExtension = true;
$ r  _$ l2 f& ]- u            //设置标题9 R* y1 b8 r' o, }) C# r% \3 r. B
            sf.Title = "写文件";1 d8 a" u. @( ~0 [
            //如果用户点击了保存按钮" t  j- P5 ~" `
            if(sf.ShowDialog()==DialogResult.OK)
+ P1 ?) [& t, g1 o( q            {) T: D7 s! y9 f4 _* Y
                //实例化一个文件流--->与写入文件相关联
( ~. T: |  Y. r. B# X4 }0 p$ Y                FileStream fs = new FileStream(sf.FileName,FileMode.Create);2 F/ h- f" W. x
                //获得字节数组" q4 f) Z0 q$ l9 I/ |7 w; e
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);, v- p7 r* r6 D# n. Y0 D9 P
                //开始写入& j6 H  ?/ k/ k) W4 q) k7 [
                fs.Write(data,0,data.Length);- q  O! Y* Y1 ?0 R9 n2 ~" X
                //清空缓冲区、关闭流
6 n0 u' ]& G4 b' E                fs.Flush();/ W; X0 v; L) e: h8 J
                fs.Close();" D. M! _% @* b. d7 }" h3 L
0 y9 j- R7 x. ?# _' N2 F+ i0 b5 ~( Z
            }& n" }& s1 t1 W

. {$ D; s! u$ T  V/ ~: O+ w  b4 `方式二:用StreamWriter& n3 Q0 l1 z* {" I

1 k% j  w* O+ m2 J//实例化一个保存文件对话框7 E, \, v" T3 J% r8 I
            SaveFileDialog sf = new SaveFileDialog();9 c0 v" c1 j5 o# G, F5 B3 z( b7 P+ M7 U
            //设置文件保存类型, x1 j; t- F1 U  E1 E2 G7 |
            sf.Filter = "txt文件|*.txt|所有文件|*.*";. F7 J( ?) K* [1 Q. a$ |" |
            //如果用户没有输入扩展名,自动追加后缀0 }8 p) ]; h6 o$ {: a
            sf.AddExtension = true;8 D; B+ _, N0 O5 N
            //设置标题# H% P- \/ p3 d9 Z7 T
            sf.Title = "写文件";$ B0 r/ y, W' m
            //如果用户点击了保存按钮
  N' m* Q5 V- X6 a0 r" |5 D2 |7 ^            if (sf.ShowDialog() == DialogResult.OK). g7 c$ U& q& V6 _- G$ s
            {
, I* i1 o; V1 V8 d9 Y" Y                //实例化一个文件流--->与写入文件相关联
& v$ I# N( W/ K2 K                FileStream fs = new FileStream(sf.FileName, FileMode.Create);. J6 `4 T& [& S, B0 T5 r/ D
                //实例化一个StreamWriter-->与fs相关联
7 K9 I3 a: d  u# a, F/ d. F% n- {                StreamWriter sw = new StreamWriter(fs);
' E7 ~! n- y6 x' d3 S) t                //开始写入3 i7 X+ ?% s2 d6 r( x
                sw.Write(this.textBox1.Text);
0 X6 I# Q' Y& s1 P                //清空缓冲区+ i/ M# A. q% Q
                sw.Flush();5 a! h$ K/ H6 I3 N9 x( B
                //关闭流
, @' B: F0 ^+ {7 `3 E4 f                sw.Close();
) f0 i6 t, c0 M: N% G6 ]- g                fs.Close();9 r6 v: F! Z$ l* \% U1 d9 I
            }, G% B- x, G' H% v( a1 ^& [( j
# R# ?; ^! _' x/ B
方式三:用BinaryWriter
1 S5 ?3 s  I1 v" r* V# S  B/ z" g  i1 J+ K
//实例化一个保存文件对话框
' t" H5 l) _2 @7 L) D9 o5 y2 ?            SaveFileDialog sf = new SaveFileDialog();  L  M; O7 I$ L* f
            //设置文件保存类型
3 d' o. o7 M* l1 o2 w& Y' c% O            sf.Filter = "txt文件|*.txt|所有文件|*.*";. j2 G" J: s  f) w/ O
            //如果用户没有输入扩展名,自动追加后缀
9 E' m0 e' W# j1 C. k  ~            sf.AddExtension = true;2 R$ y7 V8 f( [
            //设置标题0 ?$ r: r; G8 R; u- D7 y' P
            sf.Title = "写文件";
; H. Q3 Q6 E- J! D9 C8 }7 g1 c            //如果用户点击了保存按钮) U) u* i& b. I& u3 O8 W: {+ c: h
            if (sf.ShowDialog() == DialogResult.OK)( o+ ^% [& G( {- j
            {
4 D& N9 w* T' J& w2 D                //实例化一个文件流--->与写入文件相关联
& y. e8 H5 K1 y/ j  N! m                FileStream fs = new FileStream(sf.FileName, FileMode.Create);: j4 I4 r, w+ I4 f$ A% L$ x/ m
                //实例化BinaryWriter8 F* X& v% q3 A+ u: [# T
                BinaryWriter bw = new BinaryWriter(fs);
8 A4 c  N& v( _5 J, B                bw.Write(this.textBox1.Text);) e  d6 W! V3 h7 |8 g
                //清空缓冲区# a: n3 o9 ~% e& l) ~9 h
                bw.Flush();  L4 |4 |) H8 g' g1 K5 j* f4 \
                //关闭流
  W3 l" g0 B8 m; q) L                bw.Close();
' N5 {7 H. Z2 i7 ?; B1 Z; p                fs.Close();6 S8 B3 x. m2 Q' @+ V
            }9 \2 f# ?2 y$ R2 b6 ~1 [! b4 g% o/ @. k
; ]5 Q' v- P" s! O2 g( q& `
C#缓存流示例------>用缓存流复制文件! q5 \- W0 o: p) B

$ L* C; e" T9 Y" t- O! qC#文件处理操作必须先导入命名空间:using System.IO;4 }  D/ y' U  Z: X" b

: Q- |8 ^! _1 w0 r, S  X背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma& f2 k! y" z# F& A' @6 o- y; x

9 k. P8 r% w3 X& Q在按钮的Click事件中添加如下代码:
# V' h* `1 _9 K8 g3 @
% |5 H$ B! K. \; Iprivate void button1_Click(object sender, EventArgs e)0 i# J- z) B% Y) P- g( @& Q
        {, L# K) ]/ P; G* O" P4 M
            //创建两个文件流 一个是源文件相关,另一个是要写入的文件- r5 C8 ~+ q3 w. G
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);, f# u$ e/ C+ r% E
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
; A( w- z: n/ ~# q  ]# F1 [5 t4 K; D            //创建一个字节数组,作为两者之间的媒介
" V- d: x: a# k5 q0 i2 z$ {            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,- @6 z: V. F. N2 ]9 O
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,$ j: U5 A  ?& e, v! W
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率3 Y. O8 E* G8 n2 B2 {8 a5 d  y* p
            byte[] data = new byte[1024];
# K' d# S) h" R6 f0 c8 s* U/ p4 K            //创建两个缓冲流,与两个文件流相关联& u$ n3 l7 e! B8 [6 k3 m. g
            BufferedStream bs = new BufferedStream(fs);3 X3 M+ H8 X0 @7 ~) N
            BufferedStream bs2= new BufferedStream(fs2);
" b6 O9 g3 |4 B2 f- E- W9 a            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了* M* Q" d  v0 p; w6 K
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止" h0 s6 Q- p6 ^; Q" d0 F7 f
            //即-->那个人没有苹果往篮子里面放了% A7 q  U9 u; f, C$ I
            while(fs.Read(data,0,data.Length)>0)& x, O# ?7 J' ]
            {
9 r! H. n- e5 C+ f, T/ Y' ?. m3 I                fs2.Write(data,0,data.Length);
. x1 M) M; {3 T# z1 y6 O# e                fs2.Flush();9 g5 |, b; ~% a
            }) F. K) z3 W9 ^8 H5 `( b5 n
            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o..." ~: u! J9 R" Z9 T3 p
            fs.Close();
! I5 o) [& `6 O, i) C            fs2.Close();
. L  m6 v  y7 R' a* O' v- A        }/ V, X+ Y: Y9 E9 r1 C, Q

; U( Z5 Y' B2 S0 B/ z, I+ l) F5 o' X2 Z7 n
C#内存流示例----->用内存流来读取图片! x" t1 f! C5 V: c! x9 g" G
C#文件处理操作必须先导入命名空间:using System.IO;' F) a7 K; W* w3 J5 o6 e7 [
; r5 q/ d2 v1 {2 `8 {5 f
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:" h" Z' r. _5 B% T) H: [

7 l! Q2 ?' k9 P" n" u2 Cprivate void pictureBox1_Click(object sender, EventArgs e)
: M1 s1 c2 J5 Q9 u% k6 w# d        {
5 r: z- Y; a9 g( y            //实例化一个打开文件对话框* n! z2 f( @# [
            OpenFileDialog op = new OpenFileDialog();
3 c" }6 y5 K1 C- e/ H            //设置文件的类型- U" e  v% }5 \& S; T
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";* K6 Q+ Y- a4 t# k, ]$ G
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:6 s5 j: N/ m7 ?" B4 T1 D3 i
            if(op.ShowDialog()==DialogResult.OK)/ f5 w0 s* p2 u% f8 G# f" w
            {
+ w7 L* ?) F! u  L: Y+ n( e' E                //清空文本
6 d) [+ w$ N4 n# l8 _                this.label1.Text = "";
/ Z- m! h) M- m9 X2 E5 g                //实例化一个文件流
" Z+ H& O3 B9 ]  y0 k$ h                FileStream fs = new FileStream(op.FileName, FileMode.Open);! B" u2 a! U  s+ H1 j" {
                //把文件读取到字节数组
5 l8 d% v7 X5 E+ ?3 M                byte[] data = new byte[fs.Length];& u/ G# O! {4 ]9 W6 {
                fs.Read(data, 0, data.Length);
7 T/ V+ [% f! i7 N, ^/ i# Z                fs.Close();# Z" k& f- `$ G) ?4 D

+ ~, a7 o6 B" Q. c0 a" w                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去2 ^! G1 L6 h7 {/ K. o- h2 ]( E. _' k
                MemoryStream ms = new MemoryStream(data);
# s" r: B5 J7 L7 V# z; ?6 D4 j                //设置图片框 pictureBox1中的图片8 N& @( L. @& ?! N7 D  i& C
                this.pictureBox1.Image = Image.FromStream(ms);
6 @3 R2 [1 p3 i+ @- @5 g            }
7 g' `8 O7 L6 P* n2 g8 N$ Q  F/ p
4 b" S8 l# g) e; N/ H$ l* c: W; 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日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

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