ASPNET对文件的操作

ASPNET对文件的操作
1 文件和流
  文件:数据的有序集合,它是进行数据读写的基本对象
  流:连续的字节流存放空间,流中的存储空间可以是连续的空间,也可以不是
2 File  Directory 里面含有静态的对文件和目录操作的方法。调用 类.方法
  FileInfo DirectoryInfo 必须实例话,才能使用 。 对象.方法
2 对文件的操作File类
  命名 空间:using  Syatem.IO;
  方法:
    AppendText:创建一个StreamWriter对象,用于向文件末尾添加新的内容
    Copy
    Move
    Delete
    Exist:判断文件是否存在
    Open:以指定的方式,权限打开文件
    OpenRead:以只读打开
    OpenText:打开文本文件,返回iu留足
    OpenWrite
    Create:创建文件
    CreateText:创建文本文件
   1)Copy
   private void CopyFile(string oldfile,string newfile)
   {
     string oldfilepath=Server.MapPath(".")+" //"+oldfile;
     string newfilepath=Server.MapPath(".")+" //"+newfile;
     try
     {
       if(File.Exists(oldfilepath))//假如存在拷贝文件
       {
         if(!File.Exists(newfilepath))
         {
           File.Copy(oldfilepath,newfilepath);
           //移动文件
           //File.Move(oldfilepath,newfilepath);
         }
       }
     }
     catch
     {
       ....
     }
   }
   //利用流拷贝可以定义到文件的任何地方,然后开始读取
   private void CopyFile(string oldfilepath,string newfilepath)
   {
     FileStrem oldfs=new FileStream(oldfilepath,FileMode.Open,FileAccess.Open);
     FileStrem newfs=new FileStream(newfilepath,FileMode.Create,FileAccess.Write);
     //分别建立读写类
     BinaryReader br=new BinaryReader(oldfs);
     BinaryWriter bw=new BinaryWriter(newbw);
     //将指针指向流的头部
     br.BaseStream.Seek(0,SeekOrigin.Begin);
     //将写指针指向流文件的尾部
     bw.BaseStream.Seek(0,SeekOrigin.End);
     while(br.BaseStream.Position<br.BaseStream.Length)
     {
       //从br中读取byte写入bw
       bw.Write(br.ReadByte());
     }
     br.Close();
     bw.Close();
    
   }
   2)Writer
   private void WriterFile(string filename,string strinfo)
   {
     string filenamepath=Server.MapPath(".")+" //"+filename;
     //建立StreamWriter
     StreamWriter rw=File.CreateText(filenamepath)
     //写入内容
     rw.WriteLine(strinfo);
     //将缓冲区的内容写入文件
     rw.Flush();
     //关闭对象
     rw.Close(); 
   }
    //利用文件流写自定义编码格式,解决乱码问题
   private string WriteFile(string filename,string strinfo)
   {
     FileStream fs=new FileStream(filename,FileMode.Create,FileAccess.Write);
     StreamWriter rw=new StreamWriter(fs,Encoding.Default)//默认是UFT编码
     rw.WriteLine(strinfo);
     rw.Flush();
     rw.Close();
     fs.Close(); 
   }
   3)Read
   private string ReadFile(string filename)
   {
     string filenamepath=Server.MapPath(".")+" //"+filename;
     //打开文件
     StreamReader sr=File.OpenText(filenamepath);
     //利用流读
     //FileStream fs=new FileStream(filenamepath,FileMode.Open,FileAccess.Read);
     // StreamReader sr=new StreamReader(fs.Encoding.Default);
     StringBulider out=new StringBuilder();
     string line;
     while((line=sr.ReadLine())!=null)
     {
       out.Append(line+"<br>");
     }
     sr.close();
     return out; 
   }
   4)Del
   private void DelFile(string filename)
   {
     if(File.Exists(filename))
     {
       try
       {
         File.Delete(filename);
       }
       catch
       {
         .......
       }
     }
   }
 3 显示目录下的文件信息,并且在表格中显示
   private void ListFile(string strfilepath)
   {
      Table  tb=new Table();
      TableRow tr;
      TableCell td;
      tr=new TableRow();
      //添加表格的头信息
      td=new TableCell();
      td.Controls.Add(new LiteralControl("<img src="name.gif">"));
      tr.Cells.Add(td);
      td=new TableCell();
      td.Controls.Add(new LiteralControl("<img src="size.gif">"));
      tr.Cells.Add(td);
      tb.Row.Add(tr);
      string filename;
      string filesize;
      string filepic;
      string fileext;//文件的扩展名
      //取得文件的目录
      DirectoryInfo fir=new DirectoryInfo(filenamepath);
      foreach(FileSystemInfo fsinfo in dir.GetFileSystemInfos())
      {
        if(fsinfo is FileInfo)
        {
           filename=((FileInfo)fsinfo).Name;
           filesize=((FileInfo)fsinfo).Length;
           fileext=((FileInfo)fsinfo).Extension;
           swith(fileext)
           {
              case ".gif"
                filepic=" gif.gif";
                break;
              default:
                filepic="other.gif";
                break;
           }
           filepic="<img src'>"+filepic+"'width=25>"'
        }
        else
        {
          //当前为目录
          dr=(DirectoryInfo)fsinfo;
          filename=dr.Name;
          filepic="<img src='directory.gif' width=200>"
        }
        tr=new TableRow();
        td = new TableCell();
        td.Controls.Add(new LiteralControl(filepic+"&nbsp;"+filename));
        tr.Cells.Add(td);
        ......
        tb.Rows.Add(tr);
      } 
   }
4  查找文件
   private void FindFile(string filename)
   {
     try
     {
      string[] drives=Directory.GetLogicalDrivers();
      foreach(string str in drives)
      {
        if(ProcessDirectory(str,filename))
        {
          //显示找到
        }
      }
     }
     catch(IOException )
     {
       ......
     }
     catch(System.Security.SecurityExcption)
     {
       ......
     }
   }
   private bool ProcessDirectory(string dir,string filename)
   {
      try
      {
        string[] files=Directory.GetFiles(dir);
        foreach(string tempfilename in files)
        {
          if(ProcessFile(tempfilename,filename))
          {
            return true;
          }
        }
       
        string[] subdirs=Directory.GetDirectories(dir);
        foreach(string subdir in subdirs)
        {
           if(ProcessDirectory(subdir))
           {
             return true;
           }
        }
        return false;
      }
      catch
      {
        ......
      }
   }
   priavte bool ProcessFile(string tempfilename,string filename)
   {
     if(Path.getFileName(tempfilename).ToLower()==filename.Trim().ToLower())
     {
       return true;
     }
     else
     {
       return false;
     }
   }
 
  
 
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值