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

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

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

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

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

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

c#写文件
; ]+ q- T9 e% [" `
1 E% i* h! R; P, EC#文件处理操作必须先导入命名空间:using System.IO;
. A3 n: v! l# P" |0 N0 w6 x//实现背景:一个文本框、一个按钮、VS2005% t% r) U2 B5 B6 W; t

* i% U+ k2 R8 D& e% |. l6 Z方式一:用FileStream
- U% S8 {( O/ Z5 y7 E8 u+ ?6 ^& b6 P3 a3 e7 i; d* _* k
//实例化一个保存文件对话框1 a5 O4 O0 t# t. A; h
            SaveFileDialog sf = new SaveFileDialog();/ M% F, T" Q3 k' O; V- K# U) N
            //设置文件保存类型
+ f' d4 c" G% S9 ]' }& Z* \            sf.Filter = "txt文件|*.txt|所有文件|*.*";
# v( W3 I' \+ B            //如果用户没有输入扩展名,自动追加后缀
9 \, S8 ^$ U' k& H( l, b            sf.AddExtension = true;% f0 b1 q8 J% h% r$ N
            //设置标题
& V) C. L/ f8 C+ N            sf.Title = "写文件";
  }, b: M: ~( ]  r; u            //如果用户点击了保存按钮: M- |6 t, n  a% I/ {5 ^- B
            if(sf.ShowDialog()==DialogResult.OK)% A. K, R$ W" ]* \- T
            {) b! U2 V# ~) `0 K
                //实例化一个文件流--->与写入文件相关联
$ }3 x: j; r8 e* C                FileStream fs = new FileStream(sf.FileName,FileMode.Create);
7 F4 f- r1 c+ j. p6 @                //获得字节数组
+ y; p" F% P, k7 S                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);$ K: b* u0 k# ]( L8 n! m
                //开始写入
( ?# [( v) u7 K7 \. ^/ _                fs.Write(data,0,data.Length);3 H) F% o% h5 L0 A0 A/ X2 n
                //清空缓冲区、关闭流/ w- Z0 s0 L$ f
                fs.Flush();
' e5 U& C) `9 C( L                fs.Close();% c6 d; I* z. `9 \, o- J4 F
- {4 z+ L, O$ W% c! Q. A5 N5 d
            }
: y" c; t9 \( }+ K8 _7 U4 q, u* J9 M5 Z+ P0 e! i
方式二:用StreamWriter
; p, \. \6 ^: y/ e# Y$ `4 h$ X+ F1 T, O7 ~
//实例化一个保存文件对话框
7 ^4 }, e4 c8 n7 R, a" c            SaveFileDialog sf = new SaveFileDialog();3 f5 w" }4 f. ~5 _! D- Z
            //设置文件保存类型3 j  H6 f7 v- o5 q; t! Z0 R8 c
            sf.Filter = "txt文件|*.txt|所有文件|*.*";  }/ u& N) o2 i. z/ I' Z
            //如果用户没有输入扩展名,自动追加后缀5 z( E; f! P  S& V7 c
            sf.AddExtension = true;
1 j0 H+ r: Z$ |            //设置标题
6 o. N6 v' ]7 E) j, w/ ]            sf.Title = "写文件";
  R, N6 e+ V, o' ]4 H6 T/ y1 ?            //如果用户点击了保存按钮$ r) e5 p6 ]  r: x
            if (sf.ShowDialog() == DialogResult.OK)- R0 W8 L! G. K; L2 E
            {
6 ^9 j) e5 D- |' E4 i                //实例化一个文件流--->与写入文件相关联/ g# X- K- y3 A% v2 s+ E
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
3 P9 T6 V* ~% Z  n                //实例化一个StreamWriter-->与fs相关联
6 L% A" Z# S% Z7 [& d# c+ v) q1 l                StreamWriter sw = new StreamWriter(fs);$ Q8 B# A# \5 j  |! i( \
                //开始写入8 r  K" d: d- a. E* _/ f
                sw.Write(this.textBox1.Text);- _9 o* ]' ~: ~7 e5 p
                //清空缓冲区
" V: h: \0 |( z' d- ]                sw.Flush();
1 z; N" g. L) V* P+ _! x5 H: J8 X+ {                //关闭流8 u  R9 |5 O" x, i7 H! ?: ~
                sw.Close();
& P" a: @4 @& s+ f                fs.Close();4 K8 W6 c: t/ Q% l  F- s0 _
            }
; b9 G* D( ?0 \; W, a. A4 z' u! t# e) i, e" p& u
方式三:用BinaryWriter# ?2 e# x1 y. \& T/ y* h
$ t7 ?) H0 {( N
//实例化一个保存文件对话框. v) R3 M8 A" a
            SaveFileDialog sf = new SaveFileDialog();" h+ s, W  ^- M5 u; X2 \
            //设置文件保存类型
0 \  |1 u) M! i. B9 ~6 U) K            sf.Filter = "txt文件|*.txt|所有文件|*.*";
! M" ?* l' B, h& n+ e            //如果用户没有输入扩展名,自动追加后缀# s# @9 N& r( K% C5 n* |- ]
            sf.AddExtension = true;
2 _& y3 [# d0 ~% H            //设置标题
6 i$ o+ E+ j" p- V' j7 b            sf.Title = "写文件";7 Q% d( n  W/ f/ y9 t- _
            //如果用户点击了保存按钮. o; K) D; f% ]
            if (sf.ShowDialog() == DialogResult.OK)
6 y7 d3 c: w  O5 J+ ~0 }            {
4 U6 Z$ V, l2 P) M! z6 K) K* \! D  ^0 Q                //实例化一个文件流--->与写入文件相关联
  L+ W2 ^& T5 Q" A9 }                FileStream fs = new FileStream(sf.FileName, FileMode.Create);0 ?. n* H% X2 P3 e; z9 q4 e+ Q* J/ ^9 J
                //实例化BinaryWriter/ z0 \3 r- E4 y% s9 c/ _- g
                BinaryWriter bw = new BinaryWriter(fs);' h0 T* ^6 t* p- j/ P9 J! Q$ t  _
                bw.Write(this.textBox1.Text);! @+ L5 F' c( G" c" u( l. M$ d3 J' }
                //清空缓冲区" _5 D" v9 x$ X. O& g5 b
                bw.Flush();
4 J  k6 H& A/ z                //关闭流
9 C* F+ i7 \5 m% G8 ?* y+ T                bw.Close();
" O8 y8 T* f' u/ p0 G                fs.Close();
8 p7 T9 S$ k( Q& h' q( `            }! `8 ]! k, X; l' v' B. F* p# Z
/ C- k. O1 K/ {9 _) Q, u0 P/ Q& U2 H
C#缓存流示例------>用缓存流复制文件3 }' ?% F6 V; P+ S# e
1 _$ \6 B0 O" H- O9 ~4 ^8 G* L$ T
C#文件处理操作必须先导入命名空间:using System.IO;2 b0 c1 i8 n0 a0 y8 m" C
( `  r. f5 q3 Q1 S% Q8 W
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
& H# ~1 `3 B' P1 j% v% _/ z* d8 {
4 n& r5 d% L. {9 d& K$ Z在按钮的Click事件中添加如下代码:+ R2 W, n2 ?- T3 A$ {6 W

6 A* G. c$ P! z" j2 g6 S2 _private void button1_Click(object sender, EventArgs e)
9 n8 I! B6 X9 g( }. W4 Q        {
7 [1 V- D! V; b7 n5 @. E! w6 D5 z1 e            //创建两个文件流 一个是源文件相关,另一个是要写入的文件, b( o5 h' H+ |' `; P. ^
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
3 N& R, f& D' V" g( V: Z5 n+ B, n            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
7 ]/ K- Q1 a3 i9 \            //创建一个字节数组,作为两者之间的媒介2 Y) F4 n. D0 I) }( E
            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,4 p  Q4 O+ X5 R, v2 g
            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
8 m, o3 y% G# {% p; f+ B            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率4 B7 v) j. n+ n9 z: |! S! t, b
            byte[] data = new byte[1024];2 J# R, x0 O' s" w8 v
            //创建两个缓冲流,与两个文件流相关联! d6 z2 K+ M) V$ J
            BufferedStream bs = new BufferedStream(fs);1 }# J5 U) K! u  H5 T& h0 G
            BufferedStream bs2= new BufferedStream(fs2);
, \. E3 z1 X: N. [            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
9 h" H5 F$ U- }/ W0 I           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止  b. i# y5 q# E4 N4 }8 ^" f7 t
            //即-->那个人没有苹果往篮子里面放了! C+ s5 w0 a2 p# Y  H4 W
            while(fs.Read(data,0,data.Length)>0)
& x8 `1 @' E' W$ `1 K            {
' T/ _- ^5 F' D  J3 K                fs2.Write(data,0,data.Length);7 F$ n, Y9 K* K2 Z
                fs2.Flush();" o" U0 x* N/ I9 a' V: _. j8 \
            }
, D. @9 d5 X; ^0 ?: _/ r            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
! s/ |: @# t% ]& y% j7 ]            fs.Close();: c* Z- Z( k# n4 L, l' {
            fs2.Close();
1 U" E, Y/ `7 D  e1 _5 ?! f9 c& F* o9 f        }6 n* E5 o% n2 C5 L* o! D) l
' ^3 r; m( e" u* y
/ |& A& Z# P5 x0 Y
C#内存流示例----->用内存流来读取图片
6 ^1 J% {  F0 M, L( [( ZC#文件处理操作必须先导入命名空间:using System.IO;
# n; }( J+ r/ X# _2 Q$ t0 A) ~1 A' q  N0 L8 ^4 d3 i; X0 O
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
8 I: O; s* ]$ t4 ?% Q  s8 H' F8 W$ @% `5 ^' P6 i, l
private void pictureBox1_Click(object sender, EventArgs e)
! z7 W$ C& X4 }! {        {( b- ~/ i/ H6 `
            //实例化一个打开文件对话框
1 Q7 O: I9 l% F            OpenFileDialog op = new OpenFileDialog();/ H% e6 F, O% x7 G+ ]6 U- M
            //设置文件的类型) h0 ?! n! n# O2 r  n; A
            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";, ?0 B; ?$ v6 F
            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:/ E& p: p1 _6 p. g$ Q, f% J/ `
            if(op.ShowDialog()==DialogResult.OK)4 }4 ?6 e9 t- o* P+ S* B, ~
            {# \/ |: ?7 ?9 X0 I3 Y) K/ q
                //清空文本" n" ^1 a+ ?7 `& Q) {4 ?* O2 z
                this.label1.Text = "";: Y9 q6 v3 i, V7 |( |, W
                //实例化一个文件流
$ Y' V7 \" u# Z. V                FileStream fs = new FileStream(op.FileName, FileMode.Open);, A/ h; f% w$ W5 l. q" c
                //把文件读取到字节数组
9 A/ I7 l+ t6 ~; Y                byte[] data = new byte[fs.Length];
3 ^$ z8 B' y( g. U  s$ V# F% \                fs.Read(data, 0, data.Length);% ~- e6 H  }8 W' _- M# U* T+ T: b
                fs.Close();/ }! b- J8 l1 P& B7 a8 |# C! f

, Q+ k; H5 g. y( ^) w- _/ G                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去, C3 J$ ?  D) H' ?2 e  M, s
                MemoryStream ms = new MemoryStream(data);4 p" W  a6 J+ d
                //设置图片框 pictureBox1中的图片/ T% r4 p+ M1 I. Q; d
                this.pictureBox1.Image = Image.FromStream(ms);+ Q4 K7 _  M8 Z) R3 e
            }* \0 ]* U; j: }$ K
. J$ w7 g! M) b/ {/ J- a  `1 C$ r
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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