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

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

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

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

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

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

c#写文件
" j# R: |, [" {/ X. O
( _5 U" g8 @7 O( MC#文件处理操作必须先导入命名空间:using System.IO; " q3 `' L. V2 q$ J
//实现背景:一个文本框、一个按钮、VS2005/ h# ~$ a- a! F3 Z  {

8 ?7 n& t+ G, C; V' [. X5 @* w方式一:用FileStream
& R( J$ M+ r% ^% b" t- }/ T# _
8 e5 h+ h, F: Q( F/ n//实例化一个保存文件对话框; q! A7 d+ Q5 e5 L- y: W2 Y
            SaveFileDialog sf = new SaveFileDialog();
% W3 d# V7 i- h6 b# M            //设置文件保存类型- K* Z; R+ @$ @2 ~& b
            sf.Filter = "txt文件|*.txt|所有文件|*.*";
; Y8 G2 y( f5 f9 o            //如果用户没有输入扩展名,自动追加后缀
. N) I7 @4 L0 P) T8 a            sf.AddExtension = true;. r2 m- ^6 {$ h# l5 q* Y' n
            //设置标题- G5 i0 B  L; k
            sf.Title = "写文件";
5 q( p+ [8 A* E2 _5 Y9 ]            //如果用户点击了保存按钮
1 m4 z/ F4 t# {" q, c            if(sf.ShowDialog()==DialogResult.OK)
% D1 \% u" q; u1 c            {
/ h, B- }- }: S+ a                //实例化一个文件流--->与写入文件相关联2 D' w# R3 `- a9 y6 X) {
                FileStream fs = new FileStream(sf.FileName,FileMode.Create);& `, L; ^8 F1 K* t; f9 |) Z
                //获得字节数组
% e+ q$ j' M+ ?% T' g                byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);6 ]9 I: V9 r9 l& T' D. q% J
                //开始写入) [' _8 o3 b0 H0 d' I) |, b: R
                fs.Write(data,0,data.Length);5 K) n& K" d; H8 X( s3 B
                //清空缓冲区、关闭流
- h% P! u- ^* z+ M! T, C                fs.Flush();3 L9 G: U+ S) L+ M; g' Z# M1 w9 U
                fs.Close();
+ h: `5 P- O0 r1 o# u
* {0 Y5 K- h6 g& C3 A0 ^            }3 W, P! z0 y" f3 d6 g3 e, E
+ Y  W; K! H# Q( ]6 a
方式二:用StreamWriter
, N+ Z  @! m: l) l* o/ c& u1 L$ F
" J( W5 s; R7 `, H# U//实例化一个保存文件对话框1 k' m$ d% }: Z  s5 I
            SaveFileDialog sf = new SaveFileDialog();8 T' e& }/ v/ t! N- j3 J% B  R
            //设置文件保存类型
  H9 E* Q9 M0 G4 G* V% m3 Z+ v- h            sf.Filter = "txt文件|*.txt|所有文件|*.*";6 }0 w# f5 M8 K, B0 B5 l
            //如果用户没有输入扩展名,自动追加后缀* c# L% Q' {. o. M
            sf.AddExtension = true;8 g: P) [, i1 T- E" }8 r* x
            //设置标题
+ |- Y6 r. Q9 I' g; G            sf.Title = "写文件";( j6 k: @7 e4 _, Z* y
            //如果用户点击了保存按钮
1 ?) C: ?; m  c" l            if (sf.ShowDialog() == DialogResult.OK)- i8 w1 `/ X. K4 W- W/ z: |
            {% W: D) U5 L1 Q4 }( E
                //实例化一个文件流--->与写入文件相关联
3 w5 }7 T9 C' ?/ q  u8 t1 b                FileStream fs = new FileStream(sf.FileName, FileMode.Create);: s' U' I4 \, a1 p9 _6 V8 e
                //实例化一个StreamWriter-->与fs相关联
% n8 C. y- w2 N+ B                StreamWriter sw = new StreamWriter(fs);, o! M7 V  s; N! I$ h+ Y8 \
                //开始写入
6 ^8 A9 k4 I6 B  @( L                sw.Write(this.textBox1.Text);
# f1 y' e0 [1 L% d2 J1 ~! n                //清空缓冲区
  Y7 v8 `. W; Y4 j9 R2 \9 b1 K                sw.Flush();
, X/ [) e; j4 u" q                //关闭流$ Q4 S. C& J% x/ n3 C% h
                sw.Close();. D- y2 ]2 K' C. Y
                fs.Close();
5 S% s2 {0 d" D( _/ |& H. d            }9 Q9 X! p0 m) G) H1 w. u

* ]0 P8 w, X6 I" Y方式三:用BinaryWriter) F3 A" e( w7 u! p0 y" [. K5 \

3 z" p* G$ C6 z( _3 K//实例化一个保存文件对话框. v6 n  F/ G, `3 |0 l8 ?- a! E# n; T
            SaveFileDialog sf = new SaveFileDialog();1 R. [  i3 O: U  S" M; K8 j. s
            //设置文件保存类型
6 J- y! V9 `8 w/ i1 }. ]            sf.Filter = "txt文件|*.txt|所有文件|*.*";+ J2 t1 f. n* a1 p" k9 K
            //如果用户没有输入扩展名,自动追加后缀
9 g8 y9 x4 w- U9 y6 ~            sf.AddExtension = true;! f! s+ d* L% ?" r# I: D
            //设置标题
& {1 {* p' q( h# y            sf.Title = "写文件";2 y' q& }' x8 O; e
            //如果用户点击了保存按钮
( |5 q) X0 C& F4 v& w9 i* r            if (sf.ShowDialog() == DialogResult.OK)
% [4 U2 h8 {( C8 g( U            {
! m2 a' C% Z& }2 c7 c% n                //实例化一个文件流--->与写入文件相关联+ }% q+ d% E' B% m9 ?
                FileStream fs = new FileStream(sf.FileName, FileMode.Create);
8 d1 e5 l' y/ E- m. k                //实例化BinaryWriter
% N  k" q+ O- G  j- i                BinaryWriter bw = new BinaryWriter(fs);
3 o4 _5 ]" b( S& A: w                bw.Write(this.textBox1.Text);
5 w& Q: Q2 j% I+ p7 z  o6 f2 l/ O. H                //清空缓冲区' }) M" ]" M# }0 ]8 F
                bw.Flush();4 a, r, [- @: W+ m
                //关闭流& k: U' F' K; s( C+ d/ b; I  i
                bw.Close();7 s2 v( b: f' s5 t
                fs.Close();
2 X# p" q1 x0 A5 j! W            }; y0 [0 q9 `3 ]
, m8 L0 T( t$ G) a8 |
C#缓存流示例------>用缓存流复制文件+ m7 G+ e& U0 \! y9 X% G1 P
' ~) N1 x- D3 J! S' o" U  f+ Q
C#文件处理操作必须先导入命名空间:using System.IO;$ q0 H$ ~/ P3 m1 C9 H
0 W. C: u' n* J
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma0 f1 {. q3 x7 u6 X$ m

* ^0 b( Q" D- W; i; P$ R5 N: L+ L$ ]在按钮的Click事件中添加如下代码:
6 H% x- G( L- x4 E4 p# A+ U5 R; P& |1 p
private void button1_Click(object sender, EventArgs e)
, W5 G' [6 U5 p& C4 F        {
0 ~6 [! Z# w) u% s/ _9 V            //创建两个文件流 一个是源文件相关,另一个是要写入的文件  w/ c1 C4 ^' B% y' o- y
            FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);# O* B% B' K7 B# T( g
            FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);$ ?1 G* `  H$ P- J: N" ]9 `
            //创建一个字节数组,作为两者之间的媒介
" V# B4 ~. p" G" T6 D            //好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
/ X. w* X  j( j- R( j. Z            //而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
9 ^& h; e" G& a' X1 e' _            //不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率, r$ Q4 e0 e8 g) S+ q
            byte[] data = new byte[1024];
8 w6 g" f, k+ \8 ?# T  H            //创建两个缓冲流,与两个文件流相关联
7 V8 Y: P0 I: s( {7 m. b1 u) R            BufferedStream bs = new BufferedStream(fs);6 s) N/ f6 p: S1 S9 t" q- t& ~+ ^4 H
            BufferedStream bs2= new BufferedStream(fs2);" L* y. v9 G( j
            //fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了/ f: z5 j' C* q9 H" q  l
           //好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止+ M5 s6 X' n2 v, W
            //即-->那个人没有苹果往篮子里面放了
  o" l$ f( j/ B5 p& u            while(fs.Read(data,0,data.Length)>0)2 F! P5 K* m& y: j1 A3 G1 H+ e0 S% V
            {
9 y2 x1 B' C9 X3 S1 y  k  d                fs2.Write(data,0,data.Length);
9 M+ @, n+ N2 x7 u( j3 H" H                fs2.Flush();
" z% v! m- A/ x, u8 R( c            }
# k0 h1 w' J+ h/ H- X) B5 w. b, c            //关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o.../ |2 T9 E3 ?1 e" A. T) r" w& S
            fs.Close();
; u4 [( c  V) i& }( z            fs2.Close();$ d- v- [% x! K' {# P3 Z
        }3 V- P5 k, _  i. E9 u6 \2 I7 C& p4 ~# s

! {4 Q3 t' I$ i; Z' ]/ l7 w$ m3 K$ f+ D8 p" f- L- e
C#内存流示例----->用内存流来读取图片2 I2 r6 i3 @+ v6 D( @9 v
C#文件处理操作必须先导入命名空间:using System.IO;5 k$ A  d) @9 r8 n3 C: K

! q- \% A6 n/ S' b背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
$ M7 N4 ]  w% n$ V1 v5 A6 Y
, n( |* E/ N; Q$ v- @3 m2 Z5 x) |; gprivate void pictureBox1_Click(object sender, EventArgs e)
: z7 U3 P1 G. R8 v0 l/ x( D        {
' l# O# S, z& r- k. a. g+ I2 Y            //实例化一个打开文件对话框
( x, Y1 c& l& O3 D: @* Q! i            OpenFileDialog op = new OpenFileDialog();
- ]" e" e$ ~( ^3 Q6 C            //设置文件的类型
8 ?8 s3 Q  v: Y; B7 ?8 Y+ g2 f            op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
* u1 }! K) {( D            //如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:( _: z& C' h! R" ]4 x* e+ `7 @
            if(op.ShowDialog()==DialogResult.OK)
; x/ y" ?6 m$ y" R# m            {& R# D& m' [6 Z* E! {, R' T$ D
                //清空文本
/ L1 l& h5 p% A$ g/ H                this.label1.Text = "";5 {* l& j. O2 Z9 a
                //实例化一个文件流+ d; L, o7 x; ^- Q8 y0 g
                FileStream fs = new FileStream(op.FileName, FileMode.Open);3 X, ^: c5 Q" o; f% D/ ~- q, W
                //把文件读取到字节数组
' u( ^0 ^+ q8 P  h5 G- Q9 T                byte[] data = new byte[fs.Length];8 j8 k5 v& h1 a& R
                fs.Read(data, 0, data.Length);) T: k2 {& }8 X7 ?& y9 K+ ^
                fs.Close();  y- V; g/ J( k3 O) n6 Z; j+ K1 i

9 V+ d* @7 F4 i  ?$ E                //实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
7 y$ y. Q+ }# P5 h% Y                MemoryStream ms = new MemoryStream(data);
3 o+ R( e# N9 O+ o                //设置图片框 pictureBox1中的图片: `* ^7 `2 u. i% U! U
                this.pictureBox1.Image = Image.FromStream(ms);4 j  U6 Y3 _6 Q8 e3 H6 F  b
            }
0 @# D$ ?7 |3 Y* e8 Z* J( D* l  R$ |; J7 F
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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