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

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

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

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

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

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

c#写文件7 B+ X0 z2 o* I8 {

% C1 X4 ]; x- L7 Q8 h; ^1 GC#文件处理操作必须先导入命名空间:using System.IO;
2 e7 o! M+ I3 t- L3 D//实现背景:一个文本框、一个按钮、VS2005
! N& z! ^% x$ U9 T3 U: i3 z! ]  s; b$ X5 Y1 S" o. B4 I
方式一:用FileStream1 ~7 u3 s2 U1 Y. B" ^! X2 l

+ b( m! H: Q& R/ o//实例化一个保存文件对话框
6 w/ ?$ A9 Q  A# ]0 `            SaveFileDialog sf = new SaveFileDialog();* X6 O. n0 T& p. N
            //设置文件保存类型
6 {1 J3 e9 N6 o) }6 [            sf.Filter = "txt文件|*.txt|所有文件|*.*";
1 ]9 {; M) E$ E, Z            //如果用户没有输入扩展名,自动追加后缀0 k) a" b0 h/ Z: k! J
            sf.AddExtension = true;: K. }4 n( d4 \/ q
            //设置标题! m& }. o; C% y- }) q) \* f4 p
            sf.Title = "写文件";$ g+ j' X* Q  w4 A: `! p
            //如果用户点击了保存按钮* ?9 ^: X1 M7 A3 ?7 t
            if(sf.ShowDialog()==DialogResult.OK)
2 |" T% O2 P$ s" K' P: l& y            {5 W: c) [$ e" i1 C4 e! l
                //实例化一个文件流--->与写入文件相关联9 f4 F  n& {; C* u7 I2 Z
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);/ |1 W0 a- a' H; L, J, N
                //获得字节数组' Y9 w* R6 y, t
                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
- c' ?) g# i$ y- w- _5 F                //开始写入+ w, Z* C  h9 b) _, n$ x, \' C
                fs.Write(data,0,data.Length);' Y3 u2 h, D3 O9 e' }  s! m
                //清空缓冲区、关闭流3 _7 |$ \' P) t' J. p3 B: z
                fs.Flush();6 |0 ?# ^! I2 _9 k" D) W& O7 j& O
                fs.Close();: G, m; j) `% s* B

" j$ W9 V; r: \7 W3 V            }* ^# E2 V% W3 @- X1 \0 R, t
$ o- t+ h( z8 y; Y
方式二:用StreamWriter
4 e9 N* r# i  g& R7 b( z& R) g+ h5 e: t6 d# H  [8 s0 {
//实例化一个保存文件对话框
2 ]! u) t, X# q- P' W* ?* H0 ]% }            SaveFileDialog sf = new SaveFileDialog();) C. F; [$ P/ M) Q
            //设置文件保存类型
# G0 Q4 F' `7 L% f5 c# C            sf.Filter = "txt文件|*.txt|所有文件|*.*";
) p+ M8 w: ?% q) D/ i. n" x6 x# U            //如果用户没有输入扩展名,自动追加后缀: A6 E- I$ p0 Y, X
            sf.AddExtension = true;
2 g! \" ]$ f/ d5 w3 i- O% R8 \            //设置标题% E' W: D- f7 _$ m* V0 a
            sf.Title = "写文件";5 J; S2 d- y  O
            //如果用户点击了保存按钮6 J7 g8 {- Y( b1 Q9 {  l
            if (sf.ShowDialog() == DialogResult.OK); S! A$ X! C- [1 ]
            {
( f+ e- x& r( W( X) n                //实例化一个文件流--->与写入文件相关联/ `) V9 n% l, [5 I5 d2 O
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);8 Q- Y8 \& d9 P# v( o% u( V- \; L
                //实例化一个StreamWriter-->与fs相关联! p9 D, s) x) b" o2 w+ C9 q" }9 U
                StreamWriter sw = new StreamWriter(fs);
" {& C6 M9 u: g% b3 U' n. c                //开始写入
0 b0 {: {# @2 T4 [5 R                sw.Write(this.textBox1.Text);
( C. ~1 u8 ?7 R& e$ B                //清空缓冲区
. n: n, o. _6 w' [3 q5 a: t                sw.Flush();
3 X) Q4 I% A( V( O                //关闭流  u/ Q- L  \1 g1 E1 `- g
                sw.Close();
. l: [8 b/ D/ X4 n                fs.Close();
& L3 [' p5 j. [; c1 L1 A            }
+ F: z; D) M# ~  C0 k+ K! f! A# P+ G- W0 }0 N! j& d$ |$ B
方式三:用BinaryWriter, G1 H9 x) _+ O

0 e$ L7 B; d. L  Z//实例化一个保存文件对话框' O, @  x7 P' v
            SaveFileDialog sf = new SaveFileDialog();
+ x( M' P( f+ v) h9 ~5 E            //设置文件保存类型
) U7 c" |# t4 @  V, j            sf.Filter = "txt文件|*.txt|所有文件|*.*";
% J7 C" L; U' L3 `8 j. O            //如果用户没有输入扩展名,自动追加后缀
# d$ [/ h! T, c' @( W& L5 {. T/ ^  U            sf.AddExtension = true;9 m* P2 E: o' K! s  e7 t+ r; @
            //设置标题" H% @" g& h- Q3 ?, x. J
            sf.Title = "写文件";
$ L9 H1 P6 ]6 x" H4 E8 X            //如果用户点击了保存按钮
) e% G8 f8 K7 P  g. A/ F1 u            if (sf.ShowDialog() == DialogResult.OK). G0 Y+ H+ }) j, l" L# P, O
            {
% T$ N$ E# N- {1 s4 T: a4 i                //实例化一个文件流--->与写入文件相关联; d0 D/ p- {1 a) {9 c. @
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);# |' G7 i) M9 T) `
                //实例化BinaryWriter
' z9 {* z  `! x: @3 u                BinaryWriter bw = new BinaryWriter(fs);9 M6 x6 q- e! E9 @
                bw.Write(this.textBox1.Text);
" [& V# [( t. L! S8 c; z                //清空缓冲区
) b0 h; J. {, O+ j                bw.Flush();
9 O1 L' q8 g( F: R( ~  O                //关闭流" A' A0 Z- z# w9 p1 H  q
                bw.Close();
: P& w6 u: W, a& U4 ~1 p: @                fs.Close();
# j: _/ _6 C; W# R/ W; T5 E            }+ Q" i2 z9 b& z3 Z  w
$ J; M# `5 W+ R0 \
C#缓存流示例------>用缓存流复制文件- |5 Q6 w* Q8 j

3 ?' m2 X4 m8 mC#文件处理操作必须先导入命名空间:using System.IO;! F% j0 ?4 P/ ]
3 g0 \/ u. ?4 O" I
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma$ x$ H0 k( P  B% W0 l6 r" Q
$ r# U+ T" R+ K, _& D1 ?4 d2 X
在按钮的Click事件中添加如下代码:( J* X- f+ N  o' V6 r
7 H& T, @& U1 C& Y& |7 x
private void button1_Click(object sender, EventArgs e): j3 J; _" d* U( e( }! b+ ~
        {
' e6 D6 o4 d) F. a) H8 r; O/ ?            //创建两个文件流 一个是源文件相关,另一个是要写入的文件
+ |( m# M( e) ]. [            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);8 D1 [" \+ H. M* }
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);- M. ~5 G1 B6 G+ |
            //创建一个字节数组,作为两者之间的媒介
5 k; H# A3 x% \$ p            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,( ~% D+ G& n$ f( f; _3 p
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,- e  {- F- m7 ?4 s8 c4 V, |% q
            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
! U4 C. C7 N9 V+ u* R7 j            byte[] data = new byte[1024];
. D8 R+ p2 {/ y0 G            //创建两个缓冲流,与两个文件流相关联
7 R: s3 L! I9 M' i4 ^            BufferedStream bs = new BufferedStream(fs);
$ p3 S3 ^7 P, U! o+ w9 V9 N            BufferedStream bs2= new BufferedStream(fs2);
5 x" b7 e; ]* I* d+ R) P6 [            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
2 X: E% C6 H; g* ?# E' \           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止" h; Z5 F8 V% I$ y5 c6 o
            //即-->那个人没有苹果往篮子里面放了* I* |% w9 q; G9 F9 f6 v5 ]
            while(fs.Read(data,0,data.Length)>0)9 M- [, [: }( u9 [0 S. O1 R
            {4 b+ |2 a( n/ f: J9 |6 O- k( p+ k
                fs2.Write(data,0,data.Length);
; s" d+ q, o$ E  s+ @( z1 U  m+ y, F                fs2.Flush();) K* {' F9 f1 y5 s
            }
0 o/ h- S) B! C            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
, s% g4 Z3 T% J6 Q2 b) N            fs.Close();/ F3 ]1 o% ?# b/ U, u
            fs2.Close();7 V& r+ n8 n# V, n& G) W: i
        }% H  R, X) g# H* a) q* `

9 Z4 }2 {( h7 b! R, l7 C5 `" R& x' y2 ^2 D8 V
C#内存流示例----->用内存流来读取图片/ A; m+ e+ v! h
C#文件处理操作必须先导入命名空间:using System.IO;
% y: d6 y1 w* y/ s+ f  f
1 Z. B9 Z0 L. @6 J7 f1 f背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:8 y6 Y& C) b' V6 `

9 ]! x! y3 c; F  y, w! Q4 u& v. Vprivate void pictureBox1_Click(object sender, EventArgs e)
3 o* L4 D/ {+ N4 y3 _( J0 v        {
0 B) [+ ~# U6 E' T+ f. Z3 L5 E            //实例化一个打开文件对话框8 D9 N9 E. D, M4 j& o
            OpenFileDialog op = new OpenFileDialog();
( K5 Z) |9 E2 b7 r- x            //设置文件的类型# k. ~5 Z" z. `. p( W
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
* K0 ?% J5 A# K2 U% I0 }" s  T            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:8 V/ O& @6 ^  ^$ A. Q
            if(op.ShowDialog()==DialogResult.OK)! T8 A# Z. R$ N& [
            {9 l# u' r+ o2 Y
                //清空文本. M2 z2 X0 R. v# W) }# l' E- n* b$ i
                this.label1.Text = "";6 Y7 Z9 U! C1 N% a
                //实例化一个文件流
; ~6 U# A8 }1 T( o( f                FileStream fs = new FileStream(op.FileName, FileMode.Open);# v8 P9 Q& N( h, v7 w
                //把文件读取到字节数组
0 |# t1 e) w1 o: `8 }                byte[] data = new byte[fs.Length];
3 ~/ |* b# G% W" E+ o3 n& b                fs.Read(data, 0, data.Length);
7 O: T. \0 F+ x                fs.Close();
3 z  Q9 W' }# o+ E/ e: s  S- |7 o4 v: g
                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去# F. y- d# K) z& O& m
                MemoryStream ms = new MemoryStream(data);: {) D" P9 v5 N: X0 `. [7 ?
                //设置图片框 pictureBox1中的图片% {0 d6 \" G# c0 P/ ]; g# O
                this.pictureBox1.Image = Image.FromStream(ms);
9 c1 ]5 G8 z" K5 G3 y            }+ Y6 W0 `1 i- S; z) w% d" ^$ J9 i

  O4 p0 E, |; Y+ ^5 l7 _& w& t2 A        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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