本文收集了目前最為常用的C#經典操作文件的方法
C#追加文件
StreamWriter sw = File
sw
sw
sw
sw
sw
C#拷貝文件
string OrignFile
OrignFile = Server
NewFile = Server
File
C#刪除文件
string delFile = Server
File
C#移動文件
string OrignFile
OrignFile = Server
NewFile = Server
File
C#創建目錄
// 創建目錄c:\sixAge
DirectoryInfo d=Directory
// d
DirectoryInfo d
// d
DirectoryInfo d
// 將當前目錄設為c:\sixAge
Directory
// 創建目錄c:\sixAge\sixAge
Directory
// 創建目錄c:\sixAge\sixAge
Directory
遞歸刪除文件夾及文件
<%@ Page Language=C#%>
<%@ Import namespace=
<script_ runat=server>
public void DeleteFolder(string dir)
{
if (Directory
{
foreach(string d in Directory
{
if(File
File
else
DeleteFolder(d)
}
Directory
Response
}
else
Response
}
protected void Page_Load (Object sender
{
string Dir=
DeleteFolder(Dir)
}
// ======================================================
// 實現一個靜態方法將指定文件夾下面的所有內容copy到目標文件夾下面
// 如果目標文件夾為只讀屬性就會報錯
// April
// ======================================================
public static void CopyDir(string srcPath
{
try
{
// 檢查目標目錄是否以目錄分割字符結束如果不是則添加之
if(aimPath[aimPath
aimPath += Path
// 判斷目標目錄是否存在如果不存在則新建之
if(!Directory
// 得到源目錄的文件列表
// 如果你指向copy目標文件下面的文件而不包含目錄請使用下面的方法
// string[] fileList = Directory
string[] fileList = Directory
// 遍歷所有的文件和目錄
foreach(string file in fileList)
{
// 先當作目錄處理如果存在這個目錄就遞歸Copy該目錄下面的文件
if(Directory
CopyDir(file
// 否則直接Copy文件
else
File
}
}
catch (Exception e)
{
MessageBox
}
}
// ======================================================
// 實現一個靜態方法將指定文件夾下面的所有內容Detele
// 測試的時候要小心操作
// ======================================================
public static void DeleteDir(string aimPath)
{
try
{
// 檢查目標目錄是否以目錄分割字符結束如果不是則添加之
if(aimPath[aimPath
aimPath += Path
// 得到源目錄的文件列表
// 如果你指向Delete目標文件下面的文件而不包含目錄請使用下面的方法
// string[] fileList = Directory
string[] fileList = Directory
// 遍歷所有的文件和目錄
foreach(string file in fileList)
{
// 先當作目錄處理如果存在這個目錄就遞歸Delete該目錄下面的文件
if(Directory
{
DeleteDir(aimPath+Path
}
// 否則直接Delete文件
else
{
File
}
}
//刪除文件夾
System
}
catch (Exception e)
{
MessageBox
}
}
需要引用命名空間
using System
//// <summary>
/// </summary>
/// <param ></param>
/// <param ></param>
//
//
public static void CopyFolder(string strFromPath
{
//如果源文件夾不存在
if (!Directory
{
Directory
}
//取得要拷貝的文件夾名
string strFolderName = strFromPath
//如果目標文件夾中沒有源文件夾則在目標文件夾中創建源文件夾
if (!Directory
{
Directory
}
//創建數組保存源文件夾下的文件名
string[] strFiles = Directory
//循環拷貝文件
for(int i =
{
//取得拷貝的文件名
string strFileName = strFiles[i]
//開始拷貝文件
File
}
//創建DirectoryInfo實例
DirectoryInfo dirInfo = new DirectoryInfo(strFromPath)
//取得源文件夾下的所有子文件夾名稱
DirectoryInfo[] ZiPath = dirInfo
for (int j =
{
//獲取所有子文件夾名
string strZiPath = strFromPath +
//把得到的子文件夾當成新的源文件夾
CopyFolder(strZiPath
}
}
一
/**//// <summary>
/// 讀取文本文件
/// </summary>
private void ReadFromTxtFile()
{
if(filePath
{
txtFilePath =filePath
fileExtName = txtFilePath
if(fileExtName !=
{
Response
}
else
{
StreamReader fileStream = new StreamReader(txtFilePath
txtContent
fileStream
}
}
}
二
/**//// <summary>
/// 獲取文件列表
/// </summary>
private void GetFileList()
{
string strCurDir
/**////文件大小
long FileSize;
/**////最後修改時間
DateTime FileModify;
/**////初始化
if(!IsPostBack)
{
/**////初始化時
strCurDir = Server
lblCurDir
txtCurDir
}
else
{
strCurDir = txtCurDir
txtCurDir
lblCurDir
}
FileInfo fi;
DirectoryInfo dir;
TableCell td;
TableRow tr;
tr = new TableRow()
/**////動態添加單元格內容
td = new TableCell()
td
tr
td = new TableCell()
td
tr
td = new TableCell()
td
tr
td = new TableCell()
td
tr
tableDirInfo
/**////針對當前目錄建立目錄引用對象
DirectoryInfo dirInfo = new DirectoryInfo(txtCurDir
/**////循環判斷當前目錄下的文件和目錄
foreach(FileSystemInfo fsi in dirInfo
{
FileName =
FileExt =
FileSize =
/**////如果是文件
if(fsi is FileInfo)
{
fi = (FileInfo)fsi;
/**////取得文件名
FileName = fi
/**////取得文件的擴展名
FileExt = fi
/**////取得文件的大小
FileSize = fi
/**////取得文件的最後修改時間
FileModify = fi
}
/**////否則是目錄
else
{
dir = (DirectoryInfo)fsi;
/**////取得目錄名
FileName = dir
/**////取得目錄的最後修改時間
FileModify = dir
/**////設置文件的擴展名為
FileExt =
}
/**////動態添加表格內容
tr = new TableRow()
td = new TableCell()
td
tr
td = new TableCell()
td
tr
td = new TableCell()
td
tr
td = new TableCell()
td
tr
tableDirInfo
}
}
三
/**//// <summary>
/// 讀取日志文件
/// </summary>
private void ReadLogFile()
{
/**////從指定的目錄以打開或者創建的形式讀取日志文件
FileStream fs = new FileStream(Server
/**////定義輸出字符串
StringBuilder output = new StringBuilder()
/**////初始化該字符串的長度為
output
/**////為上面創建的文件流創建讀取數據流
StreamReader read = new StreamReader(fs)
/**////設置當前流的起始位置為文件流的起始點
read
/**////讀取文件
while (read
{
/**////取文件的一行內容並換行
output
}
/**////關閉釋放讀數據流
read
/**////返回讀到的日志文件內容
return output
}
四
/**//// <summary>
/// 寫入日志文件
/// </summary>
/// <param ></param>
private void WriteLogFile(string input)
{
/**////指定日志文件的目錄
string fname = Server
/**////定義文件信息對象
FileInfo finfo = new FileInfo(fname)
/**////判斷文件是否存在以及是否大於
if ( finfo
{
/**////刪除該文件
finfo
}
/**////創建只寫文件流
using(FileStream fs = finfo
{
/**////根據上面創建的文件流創建寫數據流
StreamWriter w = new StreamWriter(fs)
/**////設置寫數據流的起始位置為文件流的末尾
w
w
/**////寫入當前系統時間並換行
w
/**////寫入日志內容並換行
w
/**////寫入
w
/**////清空緩沖區內容
w
/**////關閉寫數據流
w
}
}
五
/**//// <summary>
/// 創建HTML文件
/// </summary>
private void CreateHtmlFile()
{
/**////定義和html標記數目一致的數組
string[] newContent = new string[
StringBuilder strhtml = new StringBuilder()
try
{
/**////創建StreamReader對象
using (StreamReader sr = new StreamReader(Server
{
String oneline;
/**////讀取指定的HTML文件模板
while ((oneline = sr
{
strhtml
}
sr
}
}
catch(Exception err)
{
/**////輸出異常信息
Response
}
/**////為標記數組賦值
newContent[
newContent[
newContent[
newContent[
newContent[
/**////根據上面新的內容生成html文件
try
{
/**////指定要生成的HTML文件
string fname = Server
/**////替換html模版文件裡的標記為新的內容
for(int i=
{
strhtml
}
/**////創建文件信息對象
FileInfo finfo = new FileInfo(fname)
/**////以打開或者寫入的形式創建文件流
using(FileStream fs = finfo
{
/**////根據上面創建的文件流創建寫數據流
StreamWriter sw = new StreamWriter(fs
/**////把新的內容寫到創建的HTML頁面中
sw
sw
sw
}
/**////設置超級鏈接的屬性
hyCreateFile
hyCreateFile
}
catch(Exception err)
{
Response
}
}
CreateDirectory方法的使用
using System;
using System
class Test
{
public static void Main()
{
// Specify the directory you want to manipulate
string path = @
try
{
// Determine whether the directory exists
if (Directory
{
Console
return;
}
// Try to create the directory
DirectoryInfo di = Directory
Console
// Delete the directory
di
Console
}
catch (Exception e)
{
Console
}
finally {}
}
}
From:http://tw.wingwit.com/Article/program/net/201311/12970.html