熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C# 文件操作 全收錄

2013-11-13 10:13:32  來源: .NET編程 

  本文收集了目前最為常用的C#經典操作文件的方法具體內容如下C#追加拷貝刪除移動文件創建目錄遞歸刪除文件夾及文件指定文件夾下 面的所有內容copy到目標文件夾下面指定文件夾下面的所有內容Detele讀取文本文件獲取文件列表讀取日志文件寫入日志文件創建HTML 文件CreateDirectory方法的使用

  C#追加文件

  StreamWriter sw = FileAppendText(ServerMapPath()+\\myTexttxt

  swWriteLine(追逐理想

  swWriteLine(kzlll

  swWriteLine(NET筆記

  swFlush()

  swClose()

  C#拷貝文件

  string OrignFileNewFile;

  OrignFile = ServerMapPath()+\\myTexttxt;

  NewFile = ServerMapPath()+\\myTextCopytxt;

  FileCopy(OrignFileNewFiletrue)

  C#刪除文件

  string delFile = ServerMapPath()+\\myTextCopytxt;

  FileDelete(delFile)

  C#移動文件

  string OrignFileNewFile;

  OrignFile = ServerMapPath()+\\myTexttxt;

  NewFile = ServerMapPath()+\\myTextCopytxt;

  FileMove(OrignFileNewFile)

  C#創建目錄

  // 創建目錄c:\sixAge

  DirectoryInfo d=DirectoryCreateDirectory(c:\\sixAge

  // d指向c:\sixAge\sixAge

  DirectoryInfo d=dCreateSubdirectory(sixAge

  // d指向c:\sixAge\sixAge\sixAge_

  DirectoryInfo d=dCreateSubdirectory(sixAge_

  // 將當前目錄設為c:\sixAge

  DirectorySetCurrentDirectory(c:\\sixAge

  // 創建目錄c:\sixAge\sixAge

  DirectoryCreateDirectory(sixAge

  // 創建目錄c:\sixAge\sixAge\sixAge_

  DirectoryCreateDirectory(sixAge\\sixAge_

  遞歸刪除文件夾及文件

  <%@ Page Language=C#%>

  <%@ Import namespace=SystemIO%>

  <script_ runat=server>

  public void DeleteFolder(string dir)

  {

  if (DirectoryExists(dir)) //如果存在這個文件夾刪除之

  {

  foreach(string d in DirectoryGetFileSystemEntries(dir))

  {

  if(FileExists(d))

  FileDelete(d) //直接刪除其中的文件

  else

  DeleteFolder(d) //遞歸刪除子文件夾

  }

  DirectoryDelete(dir) //刪除已空文件夾

  ResponseWrite(dir+ 文件夾刪除成功

  }

  else

  ResponseWrite(dir+ 該文件夾不存在 //如果文件夾不存在則提示

  }

  protected void Page_Load (Object sender EventArgs e)

  {

  string Dir=D:\\gbook\\;

  DeleteFolder(Dir) //調用函數刪除文件夾

  }

  // ======================================================

  // 實現一個靜態方法將指定文件夾下面的所有內容copy到目標文件夾下面

  // 如果目標文件夾為只讀屬性就會報錯

  // April April In STU

  // ======================================================

  public static void CopyDir(string srcPathstring aimPath)

  {

  try

  {

  // 檢查目標目錄是否以目錄分割字符結束如果不是則添加之

  if(aimPath[aimPathLength] != PathDirectorySeparatorChar)

  aimPath += PathDirectorySeparatorChar;

  // 判斷目標目錄是否存在如果不存在則新建之

  if(!DirectoryExists(aimPath)) DirectoryCreateDirectory(aimPath)

  // 得到源目錄的文件列表該裡面是包含文件以及目錄路徑的一個數組

  // 如果你指向copy目標文件下面的文件而不包含目錄請使用下面的方法

  // string[] fileList = DirectoryGetFiles(srcPath)

  string[] fileList = DirectoryGetFileSystemEntries(srcPath)

  // 遍歷所有的文件和目錄

  foreach(string file in fileList)

  {

  // 先當作目錄處理如果存在這個目錄就遞歸Copy該目錄下面的文件

  if(DirectoryExists(file))

  CopyDir(fileaimPath+PathGetFileName(file))

  // 否則直接Copy文件

  else

  FileCopy(fileaimPath+PathGetFileName(file)true)

  }

  }

  catch (Exception e)

  {

  MessageBoxShow (eToString())

  }

  }

  // ======================================================

  // 實現一個靜態方法將指定文件夾下面的所有內容Detele

  // 測試的時候要小心操作刪除之後無法恢復

  // ======================================================

  public static void DeleteDir(string aimPath)

  {

  try

  {

  // 檢查目標目錄是否以目錄分割字符結束如果不是則添加之

  if(aimPath[aimPathLength] != PathDirectorySeparatorChar)

  aimPath += PathDirectorySeparatorChar;

  // 得到源目錄的文件列表該裡面是包含文件以及目錄路徑的一個數組

  // 如果你指向Delete目標文件下面的文件而不包含目錄請使用下面的方法

  // string[] fileList = DirectoryGetFiles(aimPath)

  string[] fileList = DirectoryGetFileSystemEntries(aimPath)

  // 遍歷所有的文件和目錄

  foreach(string file in fileList)

  {

  // 先當作目錄處理如果存在這個目錄就遞歸Delete該目錄下面的文件

  if(DirectoryExists(file))

  {

  DeleteDir(aimPath+PathGetFileName(file))

  }

  // 否則直接Delete文件

  else

  {

  FileDelete (aimPath+PathGetFileName(file))

  }

  }

  //刪除文件夾

  SystemIO Directory Delete (aimPathtrue)

  }

  catch (Exception e)

  {

  MessageBoxShow (eToString())

  }

  }

  需要引用命名空間

  using SystemIO;

  //// <summary>

  /// </summary>

  /// <param ></param>

  /// <param ></param>

  //

  //

  public static void CopyFolder(string strFromPathstring strToPath)

  {

  //如果源文件夾不存在則創建

  if (!DirectoryExists(strFromPath))

  {

  DirectoryCreateDirectory(strFromPath)

  }

  //取得要拷貝的文件夾名

  string strFolderName = strFromPathSubstring(strFromPathLastIndexOf(\\) + strFromPathLength strFromPathLastIndexOf(\\

  //如果目標文件夾中沒有源文件夾則在目標文件夾中創建源文件夾

  if (!DirectoryExists(strToPath + \\ + strFolderName))

  {

  DirectoryCreateDirectory(strToPath + \\ + strFolderName)

  }

  //創建數組保存源文件夾下的文件名

  string[] strFiles = DirectoryGetFiles(strFromPath)

  //循環拷貝文件

  for(int i = ;i < strFilesLength;i++)

  {

  //取得拷貝的文件名只取文件名地址截掉

  string strFileName = strFiles[i]Substring(strFiles[i]LastIndexOf(\\) + strFiles[i]Length strFiles[i]LastIndexOf(\\

  //開始拷貝文件true表示覆蓋同名文件

  FileCopy(strFiles[i]strToPath + \\ + strFolderName + \\ + strFileNametrue)

  }

  //創建DirectoryInfo實例

  DirectoryInfo dirInfo = new DirectoryInfo(strFromPath)

  //取得源文件夾下的所有子文件夾名稱

  DirectoryInfo[] ZiPath = dirInfoGetDirectories()

  for (int j = ;j < ZiPathLength;j++)

  {

  //獲取所有子文件夾名

  string strZiPath = strFromPath + \\ + ZiPath[j]ToString()

  //把得到的子文件夾當成新的源文件夾從頭開始新一輪的拷貝

  CopyFolder(strZiPathstrToPath + \\ + strFolderName)

  }

  }

  一讀取文本文件

  /**//// <summary>

  /// 讀取文本文件

  /// </summary>

  private void ReadFromTxtFile()

  {

  if(filePathPostedFileFileName !=

  {

  txtFilePath =filePathPostedFileFileName;

  fileExtName = txtFilePathSubstring(txtFilePathLastIndexOf()+

  if(fileExtName !=txt && fileExtName != TXT

  {

  ResponseWrite(請選擇文本文件

  }

  else

  {

  StreamReader fileStream = new StreamReader(txtFilePathEncodingDefault)

  txtContentText = fileStreamReadToEnd()

  fileStreamClose()

  }

  }

  }

  二獲取文件列表

  /**//// <summary>

  /// 獲取文件列表

  /// </summary>

  private void GetFileList()

  {

  string strCurDirFileNameFileExt;

  /**////文件大小

  long FileSize;

  /**////最後修改時間

  DateTime FileModify;

  /**////初始化

  if(!IsPostBack)

  {

  /**////初始化時默認為當前頁面所在的目錄

  strCurDir = ServerMapPath(

  lblCurDirText = strCurDir;

  txtCurDirText = strCurDir;

  }

  else

  {

  strCurDir = txtCurDirText;

  txtCurDirText = strCurDir;

  lblCurDirText = strCurDir;

  }

  FileInfo fi;

  DirectoryInfo dir;

  TableCell td;

  TableRow tr;

  tr = new TableRow()

  /**////動態添加單元格內容

  td = new TableCell()

  tdControlsAdd(new LiteralControl(文件名))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(文件類型))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(文件大小))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(最後修改時間))

  trCellsAdd(td)

  tableDirInfoRowsAdd(tr)

  /**////針對當前目錄建立目錄引用對象

  DirectoryInfo dirInfo = new DirectoryInfo(txtCurDirText)

  /**////循環判斷當前目錄下的文件和目錄

  foreach(FileSystemInfo fsi in dirInfoGetFileSystemInfos())

  {

  FileName = ;

  FileExt = ;

  FileSize = ;

  /**////如果是文件

  if(fsi is FileInfo)

  {

  fi = (FileInfo)fsi;

  /**////取得文件名

  FileName = fiName;

  /**////取得文件的擴展名

  FileExt = fiExtension;

  /**////取得文件的大小

  FileSize = fiLength;

  /**////取得文件的最後修改時間

  FileModify = fiLastWriteTime;

  }

  /**////否則是目錄

  else

  {

  dir = (DirectoryInfo)fsi;

  /**////取得目錄名

  FileName = dirName;

  /**////取得目錄的最後修改時間

  FileModify = dirLastWriteTime;

  /**////設置文件的擴展名為文件夾

  FileExt = 文件夾;

  }

  /**////動態添加表格內容

  tr = new TableRow()

  td = new TableCell()

  tdControlsAdd(new LiteralControl(FileName))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(FileExt))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(FileSizeToString()+字節))

  trCellsAdd(td)

  td = new TableCell()

  tdControlsAdd(new LiteralControl(FileModifyToString(yyyymmdd hh:mm:ss)))

  trCellsAdd(td)

  tableDirInfoRowsAdd(tr)

  }

  }

  三讀取日志文件

  /**//// <summary>

  /// 讀取日志文件

  /// </summary>

  private void ReadLogFile()

  {

  /**////從指定的目錄以打開或者創建的形式讀取日志文件

  FileStream fs = new FileStream(ServerMapPath(upedFile)+\\logfiletxt FileModeOpenOrCreate FileAccessRead)

  /**////定義輸出字符串

  StringBuilder output = new StringBuilder()

  /**////初始化該字符串的長度為

  outputLength = ;

  /**////為上面創建的文件流創建讀取數據流

  StreamReader read = new StreamReader(fs)

  /**////設置當前流的起始位置為文件流的起始點

  readBaseStreamSeek( SeekOriginBegin)

  /**////讀取文件

  while (readPeek() >

  {

  /**////取文件的一行內容並換行

  outputAppend(readReadLine() + \n

  }

  /**////關閉釋放讀數據流

  readClose()

  /**////返回讀到的日志文件內容

  return outputToString()

  }

  四寫入日志文件

  /**//// <summary>

  /// 寫入日志文件

  /// </summary>

  /// <param ></param>

  private void WriteLogFile(string input)

  {

  /**////指定日志文件的目錄

  string fname = ServerMapPath(upedFile) + \\logfiletxt;

  /**////定義文件信息對象

  FileInfo finfo = new FileInfo(fname)

  /**////判斷文件是否存在以及是否大於K

  if ( finfoExists && finfoLength >

  {

  /**////刪除該文件

  finfoDelete()

  }

  /**////創建只寫文件流

  using(FileStream fs = finfoOpenWrite())

  {

  /**////根據上面創建的文件流創建寫數據流

  StreamWriter w = new StreamWriter(fs)

  /**////設置寫數據流的起始位置為文件流的末尾

  wBaseStreamSeek( SeekOriginEnd)

  wWrite(\nLog Entry :

  /**////寫入當前系統時間並換行

  wWrite({} {} \r\nDateTimeNowToLongTimeString()DateTimeNowToLongDateString())

  /**////寫入日志內容並換行

  wWrite(input + \n

  /**////寫入並換行

  wWrite(\n

  /**////清空緩沖區內容並把緩沖區內容寫入基礎流

  wFlush()

  /**////關閉寫數據流

  wClose()

  }

  }

  五C#創建HTML文件

  /**//// <summary>

  /// 創建HTML文件

  /// </summary>

  private void CreateHtmlFile()

  {

  /**////定義和html標記數目一致的數組

  string[] newContent = new string[];

  StringBuilder strhtml = new StringBuilder()

  try

  {

  /**////創建StreamReader對象

  using (StreamReader sr = new StreamReader(ServerMapPath(createHTML) + \\l))

  {

  String oneline;

  /**////讀取指定的HTML文件模板

  while ((oneline = srReadLine()) != null)

  {

  strhtmlAppend(oneline)

  }

  srClose()

  }

  }

  catch(Exception err)

  {

  /**////輸出異常信息

  ResponseWrite(errToString())

  }

  /**////為標記數組賦值

  newContent[] = txtTitleText;//標題

  newContent[] = BackColor=#cccfff;//背景色

  newContent[] = #ff;//字體顏色

  newContent[] = px;//字體大小

  newContent[] = txtContentText;//主要內容

  /**////根據上面新的內容生成html文件

  try

  {

  /**////指定要生成的HTML文件

  string fname = ServerMapPath(createHTML) +\\ + DateTimeNowToString(yyyymmddhhmmss) + l;

  /**////替換html模版文件裡的標記為新的內容

  for(int i=;i < ;i++)

  {

  strhtmlReplace($htmlkey[+i+]newContent[i])

  }

  /**////創建文件信息對象

  FileInfo finfo = new FileInfo(fname)

  /**////以打開或者寫入的形式創建文件流

  using(FileStream fs = finfoOpenWrite())

  {

  /**////根據上面創建的文件流創建寫數據流

  StreamWriter sw = new StreamWriter(fsSystemTextEncodingGetEncoding(GB))

  /**////把新的內容寫到創建的HTML頁面中

  swWriteLine(strhtml)

  swFlush()

  swClose()

  }

  /**////設置超級鏈接的屬性

  hyCreateFileText = DateTimeNowToString(yyyymmddhhmmss)+l;

  hyCreateFileNavigateUrl = createHTML/+DateTimeNowToString(yyyymmddhhmmss)+l;

  }

  catch(Exception err)

  {

  ResponseWrite (errToString())

  }

  }

  CreateDirectory方法的使用

  using System;

  using SystemIO;

  class Test

  {

  public static void Main()

  {

  // Specify the directory you want to manipulate

  string path = @c:\MyDir;

  try

  {

  // Determine whether the directory exists

  if (DirectoryExists(path))

  {

  ConsoleWriteLine(That path exists already

  return;

  }

  // Try to create the directory

  DirectoryInfo di = DirectoryCreateDirectory(path)

  ConsoleWriteLine(The directory was created successfully at {} DirectoryGetCreationTime(path))

  // Delete the directory

  diDelete()

  ConsoleWriteLine(The directory was deleted successfully

  }

  catch (Exception e)

  {

  ConsoleWriteLine(The process failed: {} eToString())

  }

  finally {}

  }

  }


From:http://tw.wingwit.com/Article/program/net/201311/12970.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.