冒险解谜游戏中文网 ChinaAVG
标题:
【汉化资料】C# 文件操作代码
[打印本页]
作者:
shane007
时间:
2009-4-11 22:09
标题:
【汉化资料】C# 文件操作代码
c#写文件
8 i# a3 Z# t7 q; }
- y0 D' L7 [- N2 L6 l, W, |3 L! }
C#文件处理操作必须先导入命名空间:using System.IO;
Z- Z3 ]* q) ]8 I y9 m9 y; x2 k
//实现背景:一个文本框、一个按钮、VS2005
1 E- v: X6 I, f3 t2 f
1 T% O( I, y `: T; D! }
方式一:用FileStream
+ q/ d* W8 H" ~0 s+ P
- C6 x/ H4 w3 ?, A# U2 M/ {
//实例化一个保存文件对话框
! V$ i( r# q' S8 q7 F; O i( \5 }
SaveFileDialog sf = new SaveFileDialog();
: A7 d. J/ T$ N* T/ v& s
//设置文件保存类型
9 \% M H" Q: Q Q1 V, B+ c
sf.Filter = "txt文件|*.txt|所有文件|*.*";
4 c( d6 c7 \, h* c6 a
//如果用户没有输入扩展名,自动追加后缀
' t, k# }* f( ^8 P6 \; b; S. Z+ P$ p
sf.AddExtension = true;
+ e, @ b, `, C1 M- {
//设置标题
' F: x% h l) O% l: n; Z( r
sf.Title = "写文件";
% ?. N/ V7 p1 [5 H. v; v$ P
//如果用户点击了保存按钮
' ?6 `: D! R; g: _2 q6 z4 E" d
if(sf.ShowDialog()==DialogResult.OK)
: [0 z a4 a* | n; l" n1 r' b+ J
{
i. G( ]8 h* A2 F5 {; W8 p
//实例化一个文件流--->与写入文件相关联
/ D6 C4 Q" [" s, U$ l+ {
FileStream fs = new FileStream(sf.FileName,FileMode.Create);
* m% [- G8 N, G8 \
//获得字节数组
5 `+ j+ Q) _6 i) f
byte [] data =new UTF8Encoding().GetBytes(this.textBox1.Text);
, K. V' [( d4 V; u9 U/ Z% b
//开始写入
" k0 {$ }8 |* y" n t
fs.Write(data,0,data.Length);
, |5 C P* n* t
//清空缓冲区、关闭流
6 d. |- u" S7 h+ H! a7 i
fs.Flush();
$ u' A+ y$ \# c# y; g" _+ o L5 r
fs.Close();
/ H* g5 s; b6 {2 o( j+ F
4 o5 X) c4 [# y% L+ u. _
}
! I" i. H% b! }8 h/ e- W
" m8 j+ `$ n: F& K: c* G+ V2 H# C! A
方式二:用StreamWriter
6 ?! I: g' x G) ^) ]/ G
8 p, ~2 }8 Y* X7 e
//实例化一个保存文件对话框
* B2 O( ~8 x( ?9 y/ ?$ {
SaveFileDialog sf = new SaveFileDialog();
9 |; w! M6 P6 w; h' r* O
//设置文件保存类型
& D( T* z( w! O
sf.Filter = "txt文件|*.txt|所有文件|*.*";
7 r A; I* r5 |
//如果用户没有输入扩展名,自动追加后缀
5 |- t2 S; m, U; C9 `8 M7 ?+ L
sf.AddExtension = true;
5 g. t) g( G+ ]+ X) ?- x7 N5 r
//设置标题
d% k5 V! ?5 |" d+ c! [
sf.Title = "写文件";
% `! H* A! }7 L) g, Z
//如果用户点击了保存按钮
; b6 x; S2 F9 [( G6 B
if (sf.ShowDialog() == DialogResult.OK)
- w. Y7 e& R2 H: V* W* t! j
{
5 u6 W# n2 k+ W6 I7 O- y& f
//实例化一个文件流--->与写入文件相关联
! ^2 R: B0 {, S) ~! `+ ^# `
FileStream fs = new FileStream(sf.FileName, FileMode.Create);
0 B8 p' x+ `2 G
//实例化一个StreamWriter-->与fs相关联
# Y+ I0 P" {. K' c) {
StreamWriter sw = new StreamWriter(fs);
8 ]2 F/ k: h7 S; l8 ^4 ?3 ^
//开始写入
: L4 s; X3 m: q5 ?) y) t0 N
sw.Write(this.textBox1.Text);
7 {$ Y+ W# @! c9 ?& m8 N
//清空缓冲区
5 K1 p+ A! ?1 F# A+ u- ^% o
sw.Flush();
/ N3 n1 _4 j; [! A
//关闭流
. t2 \7 B" s8 f$ K
sw.Close();
- _2 }1 ^* R6 F2 A7 H ?/ s
fs.Close();
4 d4 Z9 ^# a* k) n9 t7 n4 s
}
/ w+ h6 O! L& X% y3 e
{: ~3 e6 K5 D* S7 ]! q1 A
方式三:用BinaryWriter
4 @. b' P$ T' w* X
. ^/ p% [2 v; Z+ E# z1 y
//实例化一个保存文件对话框
1 T# K7 z; k* g& D
SaveFileDialog sf = new SaveFileDialog();
; l0 m8 F& E$ a9 k
//设置文件保存类型
8 s+ Q8 L2 y9 [2 \1 z4 a
sf.Filter = "txt文件|*.txt|所有文件|*.*";
' S9 N1 v4 N$ Y$ F q
//如果用户没有输入扩展名,自动追加后缀
3 ?8 e0 m# B- N) w1 E+ W
sf.AddExtension = true;
4 ?2 r6 G; z+ m; B
//设置标题
3 _- @' `& M& j
sf.Title = "写文件";
# m. O7 ^) N, _' o9 @* Z
//如果用户点击了保存按钮
: T1 ?& z: [0 i8 B: Y
if (sf.ShowDialog() == DialogResult.OK)
8 x+ N8 I2 ], w+ L
{
$ n4 C) u8 i% k, h+ R' v
//实例化一个文件流--->与写入文件相关联
) n4 T# U( ^( V+ t3 R7 u) M( k
FileStream fs = new FileStream(sf.FileName, FileMode.Create);
, }% w3 S5 _9 ^9 @. ?/ F
//实例化BinaryWriter
; @& N3 N V$ U3 ~- I3 p
BinaryWriter bw = new BinaryWriter(fs);
5 ?5 j. k3 ~0 Q y
bw.Write(this.textBox1.Text);
7 g4 ^8 L9 e9 J5 j
//清空缓冲区
" X( [5 K% _; v1 ~$ B8 O3 |0 W
bw.Flush();
3 ]5 g- N/ ^6 O4 p* Q3 ~
//关闭流
8 d' s7 t `6 O3 E
bw.Close();
6 G" z9 K- O+ L$ l
fs.Close();
, E1 V1 a, V3 ?! _! j; U t+ L
}
: Q! q0 n3 B7 Y
; v% T3 z- f. N' O4 a% H
C#缓存流示例------>用缓存流复制文件
* \, U! G5 ]" v e9 V: s$ u4 K
$ N2 L( `" o8 U- x' i
C#文件处理操作必须先导入命名空间:using System.IO;
' U c/ g( x/ O% K1 J2 i
4 {/ U; k6 c S0 v5 Z
背景:使用VS2005、一个按钮、一个窗体、C#缓存流、把D:\KuGoo\爱得太多.wma复制到D:\并更名为love.wma,即:D:\love.wma
2 N* H/ ?! U# E3 t
; P* ?) T8 B1 U9 Z: \6 K* v
在按钮的Click事件中添加如下代码:
$ ?4 h' z, i+ U) M9 }4 ~7 {. m) h$ q
- S' D% c4 B% k0 ^
private void button1_Click(object sender, EventArgs e)
- z5 e5 O. L& m
{
$ T. a5 g, E/ y$ u3 s: g& f, \+ F
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
( N% W0 x& [; m8 G, O- S
FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
1 s- L' O3 n2 Q9 N% t
FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
* a. e$ g% i' [( w
//创建一个字节数组,作为两者之间的媒介
D5 f% n. U- g, f$ @' ]
//好比两个人拿苹果,这个字节数组就好比一个篮子,一个人作死的把苹果送到篮子里面,
* f9 [: b" h) u7 |1 y7 e( }
//而我就可以作死得拿苹果,通过这个媒介我们互不干扰,
: X. @: }# Z o" r) T; R9 }( o
//不需要互相等待【她往篮子里面放了苹果我才可以去拿】,提高了效率
# w, z" R% v2 q0 a# D6 L9 ?% W
byte[] data = new byte[1024];
% t( C" H2 z3 c
//创建两个缓冲流,与两个文件流相关联
# v+ U, {0 `5 o8 ?( G' Z
BufferedStream bs = new BufferedStream(fs);
; G# }0 ]5 F' d8 E5 ^/ Z: i1 q8 X
BufferedStream bs2= new BufferedStream(fs2);
' N- _8 `% `4 N- h2 A3 X {/ S
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
3 N$ O& _/ a, o1 ]. @4 H3 C
//好比,一个人作死的往篮子里面丢苹果,另一个人作死得往篮子里面拿苹果,直到篮子里面没有苹果拿了为止
" P! Z2 j: M- a5 ?- U& y) W5 c \
//即-->那个人没有苹果往篮子里面放了
8 ?5 }$ D# s+ ~- C
while(fs.Read(data,0,data.Length)>0)
4 I7 i! e; b7 _7 ]$ X6 G
{
) T& r" w# n: S% ], A4 B4 _
fs2.Write(data,0,data.Length);
) h9 y) @* F" Q4 x1 a+ M
fs2.Flush();
0 K: K1 l6 a S- K2 N, L
}
! B* K1 @+ C, s* M
//关闭流,好比两个人累了,都要休息 呵呵o(∩_∩)o...
( l/ E1 u/ {9 E" ?
fs.Close();
# s' Z" r' k- w; {+ c$ P; F: V: L
fs2.Close();
K: `' m( `1 s# G' d
}
/ P6 c+ Z- o4 H5 v6 V' _
9 L1 G% }9 D7 U) ]2 ^5 P3 f3 f {
9 K2 W" ?4 N( d8 a9 `3 p, A3 j* p
C#内存流示例----->用内存流来读取图片
) w$ F# E: [% w, ?( t
C#文件处理操作必须先导入命名空间:using System.IO;
) p4 P, I6 V, c8 E# ~% G
6 s, W9 d' p; m0 S3 h: _
背景:一个窗体、一个pictureBox、一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码:
$ b: E# [1 @" c/ Z. \
+ Y, p4 N/ Y5 o' L& Z" ]
private void pictureBox1_Click(object sender, EventArgs e)
8 i, ~3 g) w, p! j
{
3 \9 w9 d' g4 t9 W) e! k' V* @
//实例化一个打开文件对话框
* C/ R# f4 C3 R( \. d
OpenFileDialog op = new OpenFileDialog();
: t! h, X6 ^1 P: k/ }. E* e
//设置文件的类型
: F$ b% S T6 x5 Y- V
op.Filter = "JPG图片|*.jpg|GIF图片|*.gif";
' X+ T3 h" k' p+ E! V. ]
//如果用户点击了打开按钮、选择了正确的图片路径则进行如下操作:
$ U1 k; k/ d8 w# N5 T9 Z
if(op.ShowDialog()==DialogResult.OK)
4 A6 j( q& _ P4 v) F) B5 K( ^5 C
{
' U3 z- [8 G( i
//清空文本
4 r) v9 d3 q+ z W4 H" M; `& a
this.label1.Text = "";
* O0 I# N. @) y0 b( _1 K) G$ T9 L- V
//实例化一个文件流
0 h K3 W% k' j3 s. c5 b5 r p
FileStream fs = new FileStream(op.FileName, FileMode.Open);
8 r. B: M) o" j0 m- l) `( b
//把文件读取到字节数组
' L$ d! |% F7 O
byte[] data = new byte[fs.Length];
" `# ^7 R8 [" k5 [& X$ r. E
fs.Read(data, 0, data.Length);
% n! o- m' \. ^0 j( h! [( e/ x
fs.Close();
. W9 G% `; {/ P d, X
8 |, Y7 f% C2 r" H: f
//实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
% A7 b1 D2 g" ?* t7 x4 W4 s
MemoryStream ms = new MemoryStream(data);
% Y; p0 w2 b( l
//设置图片框 pictureBox1中的图片
( }( j" `9 L! e. m8 @9 L I1 B7 p, `
this.pictureBox1.Image = Image.FromStream(ms);
1 T( y" b, ~# |
}
) B3 F4 h0 d4 v6 L1 j' H: ~
! m8 R$ _9 J# d8 S; ^! W$ D
}
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2