ASP.NET中常用功能代码总结(5)——文件操作篇

70 篇文章 0 订阅


一.读取文本文件

 1 /// <summary>
 2/// 读取文本文件
 3/// </summary>

 4 private  void ReadFromTxtFile()
 5 {
 6      if(filePath.PostedFile.FileName != "")
 7      {
 8         txtFilePath =filePath.PostedFile.FileName;
 9         fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".")+1,3);
10
11          if(fileExtName !="txt" && fileExtName != "TXT")
12          {
13             Response.Write("请选择文本文件");
14         }
15          else
16          {
17             StreamReader fileStream =  new StreamReader(txtFilePath,Encoding.Default);
18             txtContent.Text = fileStream.ReadToEnd();
19             fileStream.Close();
20         }
21     }
22 }

二.获取文件列表

  1 /// <summary>
  2/// 获取文件列表
  3/// </summary>

  4 private  void GetFileList()
  5 {
  6      string strCurDir,FileName,FileExt;
  7     
  8      ///文件大小
  9      long FileSize;
 10     
 11      ///最后修改时间;
 12     DateTime FileModify;
 13
 14      ///初始化
 15      if(!IsPostBack)
 16      {
 17          ///初始化时,默认为当前页面所在的目录
 18         strCurDir = Server.MapPath(".");
 19         lblCurDir.Text = strCurDir;
 20         txtCurDir.Text = strCurDir;
 21     }
 22      else
 23      {
 24         strCurDir = txtCurDir.Text;
 25         txtCurDir.Text = strCurDir;
 26         lblCurDir.Text = strCurDir;
 27     }
 28     FileInfo fi;
 29     DirectoryInfo dir;
 30     TableCell td;
 31     TableRow tr;
 32     tr =  new TableRow();
 33     
 34      ///动态添加单元格内容
 35     td =  new TableCell();
 36     td.Controls.Add( new LiteralControl("文件名"));
 37     tr.Cells.Add(td);
 38     td =  new TableCell();
 39     td.Controls.Add( new LiteralControl("文件类型"));
 40     tr.Cells.Add(td);
 41     td =  new TableCell();
 42     td.Controls.Add( new LiteralControl("文件大小"));
 43     tr.Cells.Add(td);
 44     td =  new TableCell();
 45     td.Controls.Add( new LiteralControl("最后修改时间"));
 46     tr.Cells.Add(td);
 47
 48     tableDirInfo.Rows.Add(tr);
 49     
 50      ///针对当前目录建立目录引用对象
 51     DirectoryInfo dirInfo =  new DirectoryInfo(txtCurDir.Text);
 52     
 53      ///循环判断当前目录下的文件和目录
 54      foreach(FileSystemInfo fsi  in dirInfo.GetFileSystemInfos())
 55      {
 56         FileName = "";
 57         FileExt = "";
 58         FileSize = 0;
 59         
 60          ///如果是文件
 61          if(fsi  is FileInfo)
 62          {
 63             fi = (FileInfo)fsi;
 64             
 65              ///取得文件名
 66             FileName = fi.Name;
 67             
 68              ///取得文件的扩展名
 69             FileExt = fi.Extension;
 70             
 71              ///取得文件的大小
 72             FileSize = fi.Length;
 73             
 74              ///取得文件的最后修改时间
 75             FileModify = fi.LastWriteTime;
 76         }
 77
 78          ///否则是目录
 79          else
 80          {
 81             dir = (DirectoryInfo)fsi;
 82             
 83              ///取得目录名
 84             FileName = dir.Name;
 85             
 86              ///取得目录的最后修改时间
 87             FileModify = dir.LastWriteTime;
 88             
 89              ///设置文件的扩展名为"文件夹"
 90             FileExt = "文件夹";
 91         }
 92         
 93          ///动态添加表格内容
 94         tr =  new TableRow();
 95         td =  new TableCell();
 96         td.Controls.Add( new LiteralControl(FileName));
 97         tr.Cells.Add(td);
 98         td =  new TableCell();
 99         td.Controls.Add( new LiteralControl(FileExt));
100         tr.Cells.Add(td);
101         td =  new TableCell();
102         td.Controls.Add( new LiteralControl(FileSize.ToString()+"字节"));
103         tr.Cells.Add(td);
104         td =  new TableCell();
105         td.Controls.Add( new LiteralControl(FileModify.ToString("yyyy-mm-dd hh:mm:ss")));
106         tr.Cells.Add(td);
107         tableDirInfo.Rows.Add(tr);
108     }
109 }

三.读取日志文件

 1 /// <summary>
 2/// 读取日志文件
 3/// </summary>

 4 private  void ReadLogFile()
 5 {
 6      ///从指定的目录以打开或者创建的形式读取日志文件
 7     FileStream fs  =  new FileStream(Server.MapPath("upedFile")+"\\logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);
 8
 9      ///定义输出字符串
10     StringBuilder output =  new StringBuilder();
11     
12      ///初始化该字符串的长度为0
13     output.Length = 0;
14     
15      ///为上面创建的文件流创建读取数据流
16     StreamReader read =  new StreamReader(fs);
17     
18      ///设置当前流的起始位置为文件流的起始点
19     read.BaseStream.Seek(0, SeekOrigin.Begin);
20     
21      ///读取文件
22      while (read.Peek() > -1) 
23      {
24          ///取文件的一行内容并换行
25         output.Append(read.ReadLine() + "\n");
26     }
27     
28      ///关闭释放读数据流
29     read.Close();
30     
31      ///返回读到的日志文件内容
32      return output.ToString();
33 }

四.写入日志文件

 1 /// <summary>
 2/// 写入日志文件
 3/// </summary>
 4/// <param name="input"></param>

 5 private  void WriteLogFile( string input)
 6 {    
 7      ///指定日志文件的目录
 8      string fname = Server.MapPath("upedFile") + "\\logfile.txt";
 9      ///定义文件信息对象
10     FileInfo finfo =  new FileInfo(fname);
11
12      ///判断文件是否存在以及是否大于2K
13      if ( finfo.Exists && finfo.Length > 2048 )
14      {
15          ///删除该文件
16         finfo.Delete();
17     }
18      ///创建只写文件流
19      using(FileStream fs = finfo.OpenWrite())
20      {
21          ///根据上面创建的文件流创建写数据流
22         StreamWriter w =  new StreamWriter(fs);
23         
24          ///设置写数据流的起始位置为文件流的末尾
25         w.BaseStream.Seek(0, SeekOrigin.End);
26         
27          ///写入“Log Entry : ”
28         w.Write("\nLog Entry : ");
29         
30          ///写入当前系统时间并换行
31         w.Write("{0} {1} \r\n", DateTime.Now.ToLongTimeString(),
32             DateTime.Now.ToLongDateString());
33         
34          ///写入日志内容并换行
35         w.Write(input + "\n");
36         
37          ///写入------------------------------------“并换行
38         w.Write("------------------------------------\n");
39         
40          ///清空缓冲区内容,并把缓冲区内容写入基础流
41         w.Flush();
42         
43          ///关闭写数据流
44         w.Close();
45     }
46 }

五.创建HTML文件

 1 /// <summary>
 2/// 创建HTML文件
 3/// </summary>

 4 private  void CreateHtmlFile()
 5 {    
 6      ///定义和html标记数目一致的数组
 7      string[] newContent =  new  string[5];
 8     StringBuilder strhtml =  new StringBuilder();
 9      try 
10      {
11          ///创建StreamReader对象
12          using (StreamReader sr =  new StreamReader(Server.MapPath("createHTML") + "\\template.html")) 
13          {
14             String oneline;
15             
16              ///读取指定的HTML文件模板
17              while ((oneline = sr.ReadLine()) !=  null
18              {
19                 strhtml.Append(oneline);
20             }
21             sr.Close();
22         }
23     }
24      catch(Exception err)
25      {
26          ///输出异常信息
27         Response.Write(err.ToString());
28     }
29      ///为标记数组赋值
30     newContent[0] = txtTitle.Text; // 标题
31     newContent[1] = "BackColor='#cccfff'"; // 背景色
32     newContent[2] = "#ff0000"; // 字体颜色
33     newContent[3] = "100px"; // 字体大小
34     newContent[4] = txtContent.Text; // 主要内容
35
36      ///根据上面新的内容生成html文件
37      try
38      {
39          ///指定要生成的HTML文件
40          string fname = Server.MapPath("createHTML") +"\\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";
41         
42          ///替换html模版文件里的标记为新的内容
43          for( int i=0;i < 5;i++)
44          {
45             strhtml.Replace("$htmlkey["+i+"]",newContent[i]);
46         }
47          ///创建文件信息对象
48         FileInfo finfo =  new FileInfo(fname);
49         
50          ///以打开或者写入的形式创建文件流
51          using(FileStream fs = finfo.OpenWrite())
52          {
53              ///根据上面创建的文件流创建写数据流
54             StreamWriter sw =  new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));
55             
56              ///把新的内容写到创建的HTML页面中
57             sw.WriteLine(strhtml);
58             sw.Flush();
59             sw.Close();
60         }
61         
62          ///设置超级链接的属性
63         hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html";
64         hyCreateFile.NavigateUrl = "createHTML/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";
65     }
66      catch(Exception err)
67     
68         Response.Write (err.ToString());
69     }
70 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值