不谋万世者,不足谋一时;不谋全局者,不足谋一域。君子敏于事而慎于言 新浪微薄:土司阿哈

c# 对文件的操作

上一篇 / 下一篇  2009-02-15 23:27:23 / 个人分类:软件开发相关

1208328177
  • 自动化测试:
  • 测试文档:
1/**//// <summary>51Testing软件测试网9m7M,tc/](u
    2/// 获取文件列表
,sVm`U"LJ7Th0    3/// </summary>
U[Hv|m${w0    4private void GetFileList()
MEuF'aV0    5{
%z-~*FO~ b0    6      string strCurDir,FileName,FileExt;
&\`)R%j,{ yAp0    7    
1X6Gz6U k[A0    8      /**////文件大小51Testing软件测试网R}-x6vPQ k
    9      long FileSize;
aT6D s Gbv9|]010    
*njC0L'^lZ-W011      /**////最后修改时间;51Testing软件测试网qC g!i ?QR,h m-{
12      DateTime FileModify;
'p^ vQtP7\Nl[01351Testing软件测试网'mG,qQ^
14      /**////初始化
*Y9JrtxY ?jn015      if(!IsPostBack)
*J`v;OH'vX016      {
T2p2uB z+z F \017          /**////初始化时,默认为当前页面所在的目录
Ne)v%ph[D@Vq!s018          strCurDir = Server.MapPath(".");
tGb| Fg*s"W_)~019          lblCurDir.Text = strCurDir;
(V!h q9x` X020          txtCurDir.Text = strCurDir;51Testing软件测试网 t(Q7RP(nnp
21      }
z{+W0]8n7q022      else
1Kr#?x V G{3v023      {51Testing软件测试网RLRNGUu8vg"W
24          strCurDir = txtCurDir.Text;51Testing软件测试网#{g qn ?3b~
25          txtCurDir.Text = strCurDir;51Testing软件测试网+T9tI.InpI5z;VX+kf
26          lblCurDir.Text = strCurDir;51Testing软件测试网_N,@~*W0]
27      }51Testing软件测试网3_#c4`e2Y O&tS*U
28      FileInfo fi;
|,Y_Xr029      DirectoryInfo dir;
.x7s1~ s |P030      TableCell td;
p_} hYEL[031      TableRow tr;
5Z:Q*Y%}8H2`5h/H)u,J032      tr = new TableRow();
H"t J.PP;mu033    
*F.c E]'j?$s5dS4[034      /**////动态添加单元格内容
:Y5[x ^Z035      td = new TableCell();
QXU*[(u(m,~036      td.Controls.Add(new LiteralControl("文件名"));51Testing软件测试网-X+P%KQ8U[
37      tr.Cells.Add(td);51Testing软件测试网c6I*J3Yb/y0R
38      td = new TableCell();
:V|;H7P$HxX*YB8_a~039      td.Controls.Add(new LiteralControl("文件类型"));51Testing软件测试网8R{*O4P"B
40      tr.Cells.Add(td);
&by.f1Mb+VN041      td = new TableCell();
&_LHj%i+{;W0Fln,hl042      td.Controls.Add(new LiteralControl("文件大小"));
u Z Q&Qo*O2n6N/C043      tr.Cells.Add(td);51Testing软件测试网'Z,g6Tq,_;e.{&a4R
44      td = new TableCell();51Testing软件测试网,WE A}*}3o
45      td.Controls.Add(new LiteralControl("最后修改时间"));
0ac N _p~ s2^ p046      tr.Cells.Add(td);
Z\WfY[04751Testing软件测试网]:z!zpt
48      tableDirInfo.Rows.Add(tr);
m:f9{ t*OvC049    51Testing软件测试网Xa#EC9kS V.L`d
50      /**////针对当前目录建立目录引用对象
?y:[0Ok:j}w*B051      DirectoryInfo dirInfo = new DirectoryInfo(txtCurDir.Text);
;r%~-C L9c5au[052    51Testing软件测试网v Tw&{.^9v
53      /**////循环判断当前目录下的文件和目录
"SPdn\054      foreach(FileSystemInfo fsi in dirInfo.GetFileSystemInfos())
'm\2vy2pt055      {
4qu5_3l,Bvx3fP)n056          FileName = "";
9CJ%d.e8eh057          FileExt = "";51Testing软件测试网ktH3CKEVEA`
58          FileSize = 0;
0X S8[ [NS059        51Testing软件测试网IDtdI V\(i
60          /**////如果是文件51Testing软件测试网1r5k\.j3p3s8UPo
61          if(fsi is FileInfo)
7U,i'Z,N8l?062          {51Testing软件测试网^+X4sES(S
63              fi = (FileInfo)fsi;
x \M6RJ-[064            
)?(nU Ej.s065              /**////取得文件名51Testing软件测试网 R c/Nd8VEJ
66              FileName = fi.Name;
9oN"yJ:A E}~B+P067            
(^B9S?-~2Qg1C068              /**////取得文件的扩展名51Testing软件测试网HU$g'eV;NS#U{
69              FileExt = fi.Extension;51Testing软件测试网 `L nT#DZ{9ln
70            51Testing软件测试网8[i M*W/Yq}Y
71              /**////取得文件的大小51Testing软件测试网~`[U'Q
72              FileSize = fi.Length;51Testing软件测试网A%ys({.L@
73            
1_,O1k2j V)@^1e074              /**////取得文件的最后修改时间51Testing软件测试网%s H$cjE$]+fug*h
75              FileModify = fi.LastWriteTime;51Testing软件测试网:Sj yc1p B@
76          }51Testing软件测试网3j+k U8I0g#g4M8qz
7751Testing软件测试网;tE'A@n+{4b;Hy~Q
78          /**////否则是目录51Testing软件测试网3B \+j/IT
79          else
,@x!uj?d080          {
qB!?)Q y[5U081              dir = (DirectoryInfo)fsi;
@{h1O1Z6VkG082            
Ae6be4`6V0]6~$MU083              /**////取得目录名
&ms|U+JO5~ ^9p084              FileName = dir.Name;
$HA&|)~+w&U085            51Testing软件测试网t#xQi-cyB5J
86              /**////取得目录的最后修改时间
lQbUDw&[\087              FileModify = dir.LastWriteTime;
)~+Jg2d)M(t6t+U?I@088            
#P3h!DyX P1vd089              /**////设置文件的扩展名为"文件夹"51Testing软件测试网S1ara7z8whF
90              FileExt = "文件夹";51Testing软件测试网 [~8y(Khy"zp
91          }
7E5H4i:W1C0zQN,@c092        
#M0N$c5Ss5zx093          /**////动态添加表格内容51Testing软件测试网&Xj.[0Rf B.U
94          tr = new TableRow();
J3mv!C?l`095          td = new TableCell();51Testing软件测试网8h.\/\/h0nJte
96          td.Controls.Add(new LiteralControl(FileName));51Testing软件测试网3pz.o)^#vjma
97          tr.Cells.Add(td);
:^ {e]7JK7i[098          td = new TableCell();51Testing软件测试网8H gu(k*o:I.k dT
99          td.Controls.Add(new LiteralControl(FileExt));
/ZO#s0v/@/xb+T"|0100          tr.Cells.Add(td);
T|3G!}"y)L0101          td = new TableCell();51Testing软件测试网X(a9Ii4tT
102          td.Controls.Add(new LiteralControl(FileSize.ToString()+"字节"));51Testing软件测试网D$n"q6UPe a,\ZM
103          tr.Cells.Add(td);
*dWVu/[%k0104          td = new TableCell();51Testing软件测试网&ysFSUOq-J S k
105          td.Controls.Add(new LiteralControl(FileModify.ToString("yyyy-mm-dd hh:mm:ss")));
,P%E!FI sW}0106          tr.Cells.Add(td);51Testing软件测试网z$C*m:`'oB5N
107          tableDirInfo.Rows.Add(tr);51Testing软件测试网9`@8Ze&fzh%~7ON#|
108      }51Testing软件测试网H FJs)VD2D+O
109}51Testing软件测试网!xr5w0Cs`2Dp#}

三.读取日志文件

D3Ee4i6zw6Q u*V051Testing软件测试网X6H*?$zdu9t0kl

1/**//// <summary>
3[;A(H*eeR TJ$h"o02/// 读取日志文件
Q7v!Sj*ux[;\03/// </summary>51Testing软件测试网9^-|?}:N }&t,I
4private void ReadLogFile()
o{["oFgQ05{
t3}Z/TI2MEFA06      /**////从指定的目录以打开或者创建的形式读取日志文件51Testing软件测试网3`5]&~8C'Q2t2iX!|
7      FileStream fs    = new FileStream(Server.MapPath("upedFile")+"\\logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);51Testing软件测试网csQ:R,C y^N` v
8
e7RQjr5? G4f.nm09      /**////定义输出字符串
A9IE8NJ-[9Z3i010      StringBuilder utput = new StringBuilder();51Testing软件测试网/a!p6j(GE }
11    51Testing软件测试网^.b5X%et
12      /**////初始化该字符串的长度为0
)^,J I5C7M,\&C013      output.Length = 0;
0G+d9eT$tx014    
"Y m5g'~ee'S015      /**////为上面创建的文件流创建读取数据流
xBjb o!U9E0X1TY016      StreamReader read = new StreamReader(fs);
u!g.e+q{8G7{017    51Testing软件测试网!z+l~4n{ i z"P
18      /**////设置当前流的起始位置为文件流的起始点
0Rh!T+j Kue$Ann019      read.BaseStream.Seek(0, SeekOrigin.Begin);
%h `,@ V*bJ.Sh020    
B#`&@ X:[ Y*R021      /**////读取文件
*kuY2i#m[022      while (read.Peek() > -1)
"GyF_'I9x#`e0{023      {51Testing软件测试网7u8z\E.VR
24          /**////取文件的一行内容并换行51Testing软件测试网zL;ZQF9g
25          output.Append(read.ReadLine() + "\n");
%qfS$`2D3LfC026      }51Testing软件测试网Vz)U)i1?
27    
5GLQG-qZPz028      /**////关闭释放读数据流51Testing软件测试网D5B4@,r_ B;{O*nq
29      read.Close();
.G3P%Hl w9xgl030    51Testing软件测试网,I!X]f7y{2z9F:}bW
31      /**////返回读到的日志文件内容
*r;@/sE8@|Zy032      return output.ToString();
p7\Y^&XiI}033}

v3x&@OM*T#K0

:rz ~'Y D/zK0四.写入日志文件51Testing软件测试网1eT+@k7X%UD

51Testing软件测试网d'~n9DJT)}


y7Occp*bV01/**//// <summary>
1c6iDka(wjxI02/// 写入日志文件
T2gy7f7D*R-Sp-X,AcT03/// </summary>51Testing软件测试网$RQsi%]-|
4/// <param ></param>51Testing软件测试网?&t'JYpFF|.Ir:G
5private void WriteLogFile(string input)
U,jUh(n%w x06{    51Testing软件测试网fA B!@-kM
7      /**////指定日志文件的目录51Testing软件测试网+@u/|:o:S-dBi^
8      string fname = Server.MapPath("upedFile") + "\\logfile.txt";
7Q^5rO^pcE09      /**////定义文件信息对象51Testing软件测试网A&EUq:P)DP
10      FileInfo finfo = new FileInfo(fname);51Testing软件测试网$S yR~8T;j
1151Testing软件测试网0H]9J;f7s2I
12      /**////判断文件是否存在以及是否大于2K51Testing软件测试网@Gc'@0R1q,ze0j
13      if ( finfo.Exists && finfo.Length > 2048 )
,wb|-F4^"Q6]&\014      {
W#T`&I;M,W@bH)M-}015          /**////删除该文件51Testing软件测试网1X+oa[tK'I
16          finfo.Delete();
)V/K*Y'Z r017      }
.x,tJK:om^018      /**////创建只写文件流51Testing软件测试网 yq8e&iG,RY\
19      using(FileStream fs = finfo.OpenWrite())51Testing软件测试网:mpoh zq9A
20      {
\6VP,V!O\NR021          /**////根据上面创建的文件流创建写数据流
5i6M { S&Kz.aU022          StreamWriter w = new StreamWriter(fs);51Testing软件测试网6Ncw$? \/p y3D
23        
F[b9M'dCUV024          /**////设置写数据流的起始位置为文件流的末尾51Testing软件测试网T!H~ ^%x0|9d&Q?8ut_
25          w.BaseStream.Seek(0, SeekOrigin.End);51Testing软件测试网:cAS5qhYfs
26        
*T&SmXs`kDX/x027                w.Write("\nLog Entry : ");51Testing软件测试网1f4Q+L`*p.N["qg
29        51Testing软件测试网h$KW&Mwp
30          /**////写入当前系统时间并换行51Testing软件测试网[fG8k g:GV
31          w.Write("{0} {1} \r\n", DateTime.Now.ToLongTimeString(),51Testing软件测试网 E1p#v#D9Gj H
32              DateTime.Now.ToLongDateString());51Testing软件测试网|*lDaMZ
33        
e!\,[Kg0|034          /**////写入日志内容并换行
0BsIr"i-ME035          w.Write(input + "\n");51Testing软件测试网Ye kL1_/yQ4p
36        51Testing软件测试网,D4g(QF2FTdJE
37          /**////写入------------------------------------“并换行
#Fg'R+u/ms038          w.Write("------------------------------------\n");51Testing软件测试网W!HK\p8J3|8L
39        51Testing软件测试网T9A-O*DVl
40          /**////清空缓冲区内容,并把缓冲区内容写入基础流
;UjU*? C4[041          w.Flush();51Testing软件测试网iP x'G(|7Q-K0pDt
42        
/\*I C ICo9K043          /**////关闭写数据流
?O'M+^v,k/AYU8?0^*X044          w.Close();51Testing软件测试网:T*xV`%\%z&l
45      }51Testing软件测试网S5\4DOX$v n
46}

J'ZPF5vo'f0

q7g;uV%E'x(g0五.创建HTML文件51Testing软件测试网O*t5wFh \-WY

.{8A0h*ialSc R051Testing软件测试网-i$Mk%G n7n
1/**//// <summary>51Testing软件测试网y{P r&\3D@gR
2/// 创建HTML文件
'^#AZm*TCTt03/// </summary>
S}^,{+{2_5@04private void CreateHtmlFile()51Testing软件测试网(y4ArPRSif[Lu
5{    51Testing软件测试网%H2lB8r:|.DNO2H|
6      /**////定义和html标记数目一致的数组
VH4XNW0Xy3W07      string[] newContent = new string[5];51Testing软件测试网;@^T|w B!\
8      StringBuilder strhtml = new StringBuilder();
$b TsF T$U&p!h$i E09      try51Testing软件测试网e/Wc!\6LH
10      {51Testing软件测试网 ~2h+L \"qEc'`
11          /**////创建StreamReader对象51Testing软件测试网%r@8so)e&uF@hvSO
12          using (StreamReader sr = new StreamReader(Server.MapPath("createHTML") + "\\template.html"))
G"AJ [W;e013          {51Testing软件测试网#t |b^u+x#s
14              String oneline;51Testing软件测试网/d@\ |K
15            51Testing软件测试网;c%JRJ:k%P;` [F K A
16              /**////读取指定的HTML文件模板
;Geh6P@4BNg O(^ e*c017              while ((oneline = sr.ReadLine()) != null)51Testing软件测试网L*g;q;uoRz ikT
18              {
\/NT%w2c019                  strhtml.Append(oneline);
Z"S%xU5_aj6G020              }51Testing软件测试网Hp;m$SLd
21              sr.Close();51Testing软件测试网Y)Nba ?}$Rn
22          }51Testing软件测试网P8["a8c3nIc
23      }
vWE'adP Gx024      catch(Exception err)51Testing软件测试网X%Fg0y1x7AV
25      {51Testing软件测试网:O)Q!^\?:g
26          /**////输出异常信息
rII,jKpX027          Response.Write(err.ToString());
1]3H?8O'a(Vy$g d028      }
xXyJVZ029      /**////为标记数组赋值51Testing软件测试网sN[\,Y|T
30      newContent[0] = txtTitle.Text;//标题
T[8]cJ CwX031      newContent[1] = "BackColor='#cccfff'";//背景色51Testing软件测试网/J`o%Om |l
32      newContent[2] = "#ff0000";//字体颜色
z4}'Vw0@033      newContent[3] = "100px";//字体大小51Testing软件测试网&A/I[ _3hSv
34      newContent[4] = txtContent.Text;//主要内容
7U&\?7Kz035
T%W j\%Nl YC036      /**////根据上面新的内容生成html文件51Testing软件测试网BB5^&Je Iyj
37      try
,SjAO;S ~_B9@*|038      {
P wa M/B039          /**////指定要生成的HTML文件
)I^-k'J4Sj040          string fname = Server.MapPath("createHTML") +"\\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";51Testing软件测试网 HO)dV3`X:m(_;VJp
41        51Testing软件测试网7@mc'Mc_
42          /**////替换html模版文件里的标记为新的内容
/Jx6WH4r'l6[~en5z043          for(int i=0;i < 5;i++)51Testing软件测试网 ] P+hVe d5X Xb
44          {
(J1A k.{ CH9C.d-~045              strhtml.Replace("$htmlkey["+i+"]",newContent[i]);51Testing软件测试网$}yT%QbLV
46          }51Testing软件测试网9A"d'ZQ2j;[R"? X3J
47          /**////创建文件信息对象
vr0y+d2k048          FileInfo finfo = new FileInfo(fname);51Testing软件测试网9q?!X3e0k+Xj1hL0G
49        
$t0\7S QE!y`.Kb2{wLCY c050          /**////以打开或者写入的形式创建文件流51Testing软件测试网 D@/wBO!|/M N
51          using(FileStream fs = finfo.OpenWrite())
m f,}+E&t052          {51Testing软件测试网5{p:tG{vj/m
53              /**////根据上面创建的文件流创建写数据流
7pe7Bb i`+Z054              StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));51Testing软件测试网9[U$I5J3T9Z w
55            51Testing软件测试网 l*Q`^&k!Fw&C
56              /**////把新的内容写到创建的HTML页面中51Testing软件测试网4c%a8ONco/|2[!e
57              sw.WriteLine(strhtml);
(WO9^y1n s1UZTv9d#K058              sw.Flush();
&nQ3ah:pB4]E,{ |wH5E059              sw.Close();
)G`e5RFw3Q060          }
b bX K T{n)so061        
R9b!r}D P062          /**////设置超级链接的属性
FAE|!L.x063          hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html";51Testing软件测试网7C+H3z.Br
64          hyCreateFile.NavigateUrl = "createHTML/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";51Testing软件测试网/N:j }|Fd,|
65      }51Testing软件测试网$}&OI"Y:KK8t [
66      catch(Exception err)51Testing软件测试网9NXLR` { o
67      {
,s!~] M^#T/OI&i068          Response.Write (err.ToString());51Testing软件测试网6{![zDT
69      }51Testing软件测试网o%a*C@3G
70}51Testing软件测试网Q$j7x0}1K9D `
51Testing软件测试网,xQ@8f&R#L
51Testing软件测试网S8OB(ynb
CreateDirectory方法方法的使用方法51Testing软件测试网I I|@\O'j+bd

4fCb U5W+cn+`0using     System;   51Testing软件测试网+u*\ N!_g
    using     System.IO;   
#[ y,O;]+R!@s0    
;Lxa/P#~F n Zv9A0    class     Test     
\f#xE8v b u6[nR x7Fj8N0    {   
J1?U5{2\/q;w~0            public     static     void     Main()     
6C{t0X7z+C)|J0            {   
5@5GNZ5} k&w8S0                    //     Specify     the     directory     you     want     to     manipulate.   
,r_&n'mlVn%B1]fb3q0                    string     path     =     @"c:\MyDir";   
E;{I/[z0    
KVzV0oz0                    try     
%SM lh!a9U x!T0                    {   
,D-g(?&A9U8Aa&yc!H0                            //     Determine     whether     the     directory     exists.   
{MG2kBw+|aq)I0                            if     (Directory.Exists(path))     
v{] ?i4NQ0                            {   
8N d },{+I$nX0                                    Console.WriteLine("That     path     exists     already.");   
^@-k U%TW u0                                    return;   
a9`/t IaTRs{0                            }   
2[F$e N%OsNJ-cZ0    51Testing软件测试网` eC"W_
                            //     Try     to     create     the     directory.   
&iE|2K Y6J,j*}S%z0                            DirectoryInfo     di     =     Directory.CreateDirectory(path);   51Testing软件测试网8l q7Xz%bE P&q$U%t6r)k
                            Console.WriteLine("The     directory     was     created     successfully     at     {0}.",     Directory.GetCreationTime(path));   
$l/\Bwfg(r]+T0    
5|s&z7w0DJ0                            //     Delete     the     directory.   
L(z$BEXsOR0                            di.Delete();   
-km"h"qfcoM0                            Console.WriteLine("The     directory     was     deleted     successfully.");   51Testing软件测试网(~/a/I{[7M)Y3y
                    }     
4^|*H w3}H"_Ez0                    catch     (Exception     e)     51Testing软件测试网w]qf%_
                    {   
kTgWw%YSB0                            Console.WriteLine("The     process     failed:     {0}",     e.ToString());   51Testing软件测试网 N-Z i"P^6@
                    }     
8n5m)styN0                    finally     {}   51Testing软件测试网bq#V_]|Az V
            }   
_V:C$z wW.f3Nu0    }   

y|i*Mjn'?0

TAG:

 

评分:0

我来说两句

Open Toolbar