ASP.NET文件操作收藏
System.IO
Directory:用于創(chuàng)建、移動(dòng)和枚舉通過目錄和子目錄
File:用于創(chuàng)建、復(fù)制、刪除、移動(dòng)和打開文件
Path:對包含文件或目錄路徑信息的String實(shí)例執(zhí)行操作
StreamReader、StreamWriter:以一種特定的編碼寫字符
File類常用的方法
AppendText:創(chuàng)建一個(gè)StreamWriter對象,用于在指定文件的末尾添加新的內(nèi)容
Copy:復(fù)制指定文件
Move:移動(dòng)文件
Delete:刪除文件
Exit:判斷指定文件是否存在
Open:以指定的方式、權(quán)限打開指定文件
OpenRead:以只讀方式打開指定文件
OpenText:打開文本文件,返回流
OpenWrite:以讀寫方式打開指定文件
Cteate:創(chuàng)建一個(gè)指定文件
CreateText:創(chuàng)建一個(gè)文本文件
File類的使用
using System.IO;
using System.Text;
private void Page_Load(object sender, System.EventArgs e)
{
?? //建立StreamWriter為寫做準(zhǔn)備
?? StreamWriter rw = File.CreateText(Server.MapPath(".")+"\\CreateText.txt");
?? //使用WriteLine寫入內(nèi)容
?? rw.WriteLine("使用File.CreateText 方法");
?? rw.WriteLine("返回StreamWriter流,利用這個(gè)流進(jìn)行寫入。");
?? //將緩沖區(qū)的內(nèi)容寫入文件
?? rw.Flush();
?? //關(guān)閉rw對象
?? rw.Close();
?? //打開文本文件
?? StreamReader sr = File.OpenText(Server.MapPath(".")+"\\CreateText.txt");
?? StringBuilder output = new StringBuilder();
?? string rl;
?? while((rl=sr.ReadLine())!=null)
?? {
??? output.Append(rl+"<br>");
?? }
?? lblFile.Text = output.ToString();
?? sr.Close();
}
using System.IO;
using System.Text;
private void btnRead_Click(object sender, System.EventArgs e)
{
?? //打開文本文件
?? string strFileName = FileSelect.PostedFile.FileName;
?? if(Path.GetFileName(strFileName)=="")
??? return;
?? StreamReader sr = File.OpenText(strFileName);
?? StringBuilder output = new StringBuilder();
?? string rl;
?? while((rl=sr.ReadLine())!=null)
?? {
??? output.Append(rl+"<br>");
?? }
?? lblFile.Text = output.ToString();
?? sr.Close();
}
文件復(fù)制
private void Page_Load(object sender, System.EventArgs e)
{
?? string OrignFile= Server.MapPath(".")+"\\CreateText.txt";
?? string NewFile = Server.MapPath(".")+"\\NewCreateText.txt";
?? //首先判斷源文件和新文件是否都存在
?? if(File.Exists(OrignFile))
?? {
??? lblBFromFile.Text = OrignFile + "存在<br>";
?? }
?? else
?? {
??? lblBFromFile.Text = OrignFile + "不存在<br>";
?? }
?? if(File.Exists(NewFile))
?? {
??? lblBToFile.Text = NewFile + "存在<br>";
?? }
?? else
?? {
??? lblBToFile.Text = NewFile + "不存在<br>";
?? }??
}
private void btnCopy_Click(object sender, System.EventArgs e)
{
?? string OrignFile= Server.MapPath(".")+"\\CreateText.txt";
?? string NewFile = Server.MapPath(".")+"\\NewCreateText.txt";
?? //拷貝文件
?? try
?? {
??? File.Copy(OrignFile,NewFile);
??? if(File.Exists(OrignFile))
??? {
???? lblEFromFile.Text = OrignFile + "存在<br>";
??? }
??? else
??? {
???? lblEFromFile.Text = OrignFile + "不存在<br>";
??? }
??? if(File.Exists(NewFile))
??? {
???? FileInfo fi = new FileInfo(NewFile);
???? DateTime Ctime = fi.CreationTime;
???? lblEToFile.Text = NewFile + "已經(jīng)存在<br>創(chuàng)建時(shí)間:" + Ctime.ToString() + "<br>";
??? }
??? else
??? {
???? lblEToFile.Text = NewFile + "不存在<br>";
??? }
?? }
?? catch(Exception ee)
?? {
??? lblError.Text = "不能拷貝文件,錯(cuò)誤信息為:"+ee.Message;
?? }
}
private void Page_Load(object sender, System.EventArgs e)
{
?? string OrignFile,NewFile;
?? OrignFile = Server.MapPath(".")+"\\CreateText.txt";
?? NewFile = Server.MapPath(".")+"\\..\\NewCreateText.txt";
?? //首先判斷源文件和新文件是否都存在
?? if(File.Exists(OrignFile))
?? {
??? lblBFromFile.Text = OrignFile + "存在<br>";
?? }
?? else
?? {
??? lblBFromFile.Text = OrignFile + "不存在<br>";
?? }
?? if(File.Exists(NewFile))
?? {
??? lblBToFile.Text = NewFile + "存在<br>";
?? }
?? else
?? {
??? lblBToFile.Text = NewFile + "不存在<br>";
?? }
}
private void btnMove_Click(object sender, System.EventArgs e)
{
?? string OrignFile,NewFile;
?? OrignFile = Server.MapPath(".")+"\\CreateText.txt";
?? NewFile = Server.MapPath(".")+"\\..\\NewCreateText.txt";
?? //移動(dòng)文件
?? try
?? {
??? File.Move(OrignFile,NewFile);
??? if(File.Exists(OrignFile))
??? {
???? lblEFromFile.Text = OrignFile + "存在<br>";
??? }
??? else
??? {
???? lblEFromFile.Text = OrignFile + "不存在<br>";
??? }
??? if(File.Exists(NewFile))
??? {
???? FileInfo fi = new FileInfo(NewFile);
???? DateTime Ctime = fi.CreationTime;
???? lblEToFile.Text = NewFile + "已經(jīng)存在了<br>創(chuàng)建時(shí)間:" + Ctime.ToString() + "<br>";
??? }
??? else
??? {
???? lblEToFile.Text = NewFile + "不存在<br>";
??? }
?? }
?? catch(Exception ee)
?? {
??? lblError.Text = "不能移動(dòng)文件";
?? }
}
private void btnDelete_Click(object sender, System.EventArgs e)
{
?? //首先判斷文件是否存在
?? string delFile = Server.MapPath(".")+"\\NewCreateText.txt";
?? if(File.Exists(delFile))
?? {
??? //建立FileInfo對象,取得指定的文件信息
??? FileInfo fi = new FileInfo(delFile);
??? DateTime CreateTime = fi.CreationTime;
??? Label lblOne = new Label();
??? lblOne.Text = delFile + "存在<br>創(chuàng)建時(shí)間為:" + CreateTime.ToString() + "<p>";
??? plShow.Controls.Add(lblOne);
??? try
??? {
???? //刪除文件
???? File.Delete(delFile);
???? Label lblOk = new Label();
???? lblOk.Text = "刪除文件"+delFile+"成功";
???? plShow.Controls.Add(lblOk);
??? }
??? catch(Exception ee)
??? {
???? //捕捉異常
???? Label lblFileExists = new Label();
???? lblFileExists.Text = "不能刪除文件"+delFile+"<br>";
???? plShow.Controls.Add(lblFileExists);
??? }
?? }
?? else
?? {
??? Label lblError = new Label();
??? lblError.Text = delFile + "根本就不存在";
??? plShow.Controls.Add(lblError);
?? }
}
FileSteam常用屬性和方法
CanRead:判斷當(dāng)前是否支持讀取
Canwrite:判斷當(dāng)前是否支持寫入
CanSeek:是否支持搜索
IsAsync:是否處于異步打開模式
Postion:設(shè)置獲取當(dāng)前流所處位置
Flush:將當(dāng)前緩存區(qū)的數(shù)據(jù)寫入文件
Lock:鎖定流,防止其他文件訪問
Seek:設(shè)置當(dāng)前流操作的指針位置
FileSteam類的使用
private void Page_Load(object sender, System.EventArgs e)
{
?? FileStream fs = new FileStream(Server.MapPath(".")+"\\FileStreamCreateText.txt",FileMode.Create,FileAccess.Write);
?? //建立StreamWriter為寫做準(zhǔn)備
?? StreamWriter rw = new StreamWriter(fs,Encoding.Default);
?? //使用WriteLine寫入內(nèi)容
?? rw.WriteLine("曾經(jīng)有一份真摯的愛情放在我的面前。");
?? rw.WriteLine("而我沒有珍惜,當(dāng)我失去的時(shí)候,我才追悔莫及。");
?? rw.WriteLine("人世間最大的痛苦莫過于此,如果上天給我一個(gè)再來一次的機(jī)會(huì)。");
?? rw.WriteLine("我會(huì)對那個(gè)女孩說三個(gè)字:\"我愛你。\"");
?? rw.WriteLine("如果非要在這份愛上加一個(gè)期限的話,我希望是一萬年。");
?? //將緩沖區(qū)的內(nèi)容寫入文件
?? rw.Flush();
?? //關(guān)閉rw對象
?? rw.Close();
?? fs.Close();
?? fs = new FileStream(Server.MapPath(".")+"\\FileStreamCreateText.txt",FileMode.Open,FileAccess.Read);
?? //打開文本文件
?? StreamReader sr = new StreamReader(fs,Encoding.Default);
?? StringBuilder output = new StringBuilder();
?? string rl;
?? while((rl=sr.ReadLine())!=null)
?? {
??? output.Append(rl+"<br>");
?? }
?? lblFile.Text = output.ToString();
?? sr.Close();
?? fs.Close();
}
private void btnRead_Click(object sender, System.EventArgs e)
{
?? //打開文本文件
?? string strFileName = FileSelect.PostedFile.FileName;
?? if(Path.GetFileName(strFileName)=="")
??? return;
?? FileStream fs = new FileStream(strFileName,FileMode.Open,FileAccess.Read);
?? StreamReader sr = new StreamReader(fs,Encoding.Default);
?? StringBuilder output = new StringBuilder();
?? string rl;
?? while((rl=sr.ReadLine())!=null)
?? {
??? output.Append(rl+"<br>");
?? }
?? sr.Close();
?? fs.Close();
?? lblFile.Text = output.ToString();
}
private void btnCopy_Click(object sender, System.EventArgs e)
{
?? string OriginFile = FileSelect.PostedFile.FileName;
?? string NewFile = tbDes.Text +"\\"+Path.GetFileName(OriginFile);
?? //下面開始操作
?? //建立兩個(gè)FileStream對象
?? FileStream fsOF = new FileStream(OriginFile,FileMode.Open,FileAccess.Read);
?? FileStream fsNF = new FileStream(NewFile,FileMode.Create,FileAccess.Write);
?? //建立分別建立一個(gè)讀寫類
?? BinaryReader br = new BinaryReader(fsOF);
?? BinaryWriter bw = new BinaryWriter(fsNF);
?? //將讀取文件流指針指向流的頭部
?? br.BaseStream.Seek(0,SeekOrigin.Begin);
?? //將寫入文件流指針指向流的尾部
?? bw.BaseStream.Seek(0,SeekOrigin.End);
?? while(br.BaseStream.Position < br.BaseStream.Length)
?? {
??? //從br流中讀取一個(gè)Byte并馬上寫入bw流
??? bw.Write(br.ReadByte());
?? }
?? br.Close();
?? bw.Close();
?? //操作后判斷源文件是否存在??
?? if(File.Exists(NewFile))
?? {
??? lbInfo.Text = "附件復(fù)制成功!";
?? }
?? else
?? {
??? lbInfo.Text = "文件復(fù)制失敗!";
?? }
}
DirectoryInto和FileInfo類的使用
private void Page_Load(object sender, System.EventArgs e)
{
?? string strCurrentDir;
?? //初始化一些數(shù)據(jù)
?? if(!Page.IsPostBack)
?? {
??? strCurrentDir = Server.MapPath(".");
??? lblCurrentDir.Text = strCurrentDir;
??? tbCurrentDir.Text = strCurrentDir;
?? }
?? else
?? {
??? strCurrentDir = tbCurrentDir.Text;
??? tbCurrentDir.Text = strCurrentDir;
??? lblCurrentDir.Text = strCurrentDir;
?? }
?? FileInfo fi;
?? DirectoryInfo di;
?? TableCell td;
?? TableRow tr;
?? /*??? 設(shè)定Table中的數(shù)據(jù)首先搞定第一行?? */
?? 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);
?? td = new TableCell();
?? td.Controls.Add(new LiteralControl("<img src='lastmodify.gif'>"));
?? tr.Cells.Add(td);
?? tbDirInfo.Rows.Add(tr);
?? string FileName;?? //文件名稱
?? string FileExt;??? //文件擴(kuò)展名
?? string FilePic;??? //文件圖片
?? long FileSize;??? //文件大小
?? DateTime FileModify; //文件更新時(shí)間
?? DirectoryInfo dir = new DirectoryInfo(strCurrentDir);
?? foreach(FileSystemInfo fsi in dir.GetFileSystemInfos())
?? {
??? FilePic = "";
??? FileName = "";
??? FileExt = "";
??? FileSize = 0;
??? if(fsi is FileInfo)
??? {
???? //表示當(dāng)前fsi是文件
???? fi = (FileInfo)fsi;
???? FileName = fi.Name;
???? FileExt = fi.Extension;
???? FileSize = fi.Length;
???? FileModify = fi.LastWriteTime;
???? //通過擴(kuò)展名來選擇文件顯示圖標(biāo)
???? switch(FileExt)
???? {
????? case ".gif":
?????? FilePic = "gif.gif";
?????? break;
????? default:
?????? FilePic = "other.gif";
?????? break;
???? }
???? FilePic = "<img src='"+FilePic+"' width=25 height=20>";
??? }
??? else
??? {
???? //當(dāng)前為目錄
???? di = (DirectoryInfo)fsi;
???? FileName = di.Name;
???? FileModify = di.LastWriteTime;
???? FilePic = "<img src='directory.gif' width=25 height=20>";
??? }
??? //組建新的行
??? tr = new TableRow();
??? td = new TableCell();
??? td.Controls.Add(new LiteralControl(FilePic+" "+FileName));
??? tr.Cells.Add(td);
??? td = new TableCell();
??? td.Controls.Add(new LiteralControl(FileSize.ToString()));
??? tr.Cells.Add(td);
??? td = new TableCell();
??? td.Controls.Add(new LiteralControl(FileModify.ToString()));
??? tr.Cells.Add(td);
??? tbDirInfo.Rows.Add(tr);
?? }
}
private void btnFind_Click(object sender, System.EventArgs e)
{
?? try
?? {
??? if(tbInput.Text.Trim()=="")
??? {
???? lbPath.Text = "文件名為空!";
???? return;
??? }
??? string[] drives = System.IO.Directory.GetLogicalDrives();
??? foreach (string str in drives)
??? {????
???? if(ProcessDirectory(str))
????? break;
??? }
??? if(!bExist)
???? lbPath.Text = "不存在此文件!";
?? }
?? catch (System.IO.IOException)
?? {
??? Response.Write("I/O錯(cuò)誤!");
?? }
?? catch (System.Security.SecurityException)
?? {
??? Response.Write("沒有訪問權(quán)限!");
?? }
}
public bool ProcessDirectory(string targetDirectory)
{
?? try
?? {
??? // Process the list of files found in the directory
??? string [] fileEntries = Directory.GetFiles(targetDirectory);
??? foreach(string fileName in fileEntries)
??? {
???? if(ProcessFile(fileName))
????? return true;????
??? }
??? // Recurse into subdirectories of this directory
??? string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
??? foreach(string subdirectory in subdirectoryEntries)
??? {
???? if(ProcessDirectory(subdirectory))
????? return true;
??? }
??? return false;
?? }
?? catch(Exception)
?? {
??? return false;
?? }
}
public bool ProcessFile(string strFileName)
{
?? if(Path.GetFileName(strFileName).ToLower()==tbInput.Text.Trim().ToLower())
?? {
??? lbPath.Text = strFileName.ToLower();
??? bExist=true;
??? return true;
?? }
?? else
??? return false;
}
轉(zhuǎn)載于:https://www.cnblogs.com/Miton/archive/2011/06/01/2066028.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的ASP.NET文件操作收藏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最近整理关于SQL Server2005
- 下一篇: Cookies揭秘 [Asp.Net,