C#文件非占用讀取與幫助類FileHelper_第1頁
C#文件非占用讀取與幫助類FileHelper_第2頁
C#文件非占用讀取與幫助類FileHelper_第3頁
C#文件非占用讀取與幫助類FileHelper_第4頁
C#文件非占用讀取與幫助類FileHelper_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第C#文件非占用讀取與幫助類FileHelper非占用方式:

FileStreamfs=newFileStream(fileName,FileMode.Open,FileAccess.Read,FileShare.ReadWrite|FileShare.Delete);

StreamReadersr=newStreamReader(fs,System.Text.Encoding.Default);

//按行讀取

stringstrLine=sr.ReadLine();

//關(guān)閉讀寫流和文件流

sr.Close();

fs.Close();

占用方式:

FileStreamfs=newFileStream(fileName,System.IO.FileMode.Open,System.IO.FileAccess.Read);

StreamReadersr=newStreamReader(fs,System.Text.Encoding.Default);

StreamReadersr=newStreamReader(fs,System.Text.Encoding.Default);

//按行讀取

stringstrLine=sr.ReadLine();

//關(guān)閉讀寫流和文件流

sr.Close();

fs.Close();

文件以及文件夾幫助類(FileHelper)

代碼:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.IO;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

namespaceFileHelperDemo

///summary

///文件操作幫助類

////summary

publicclassFileUtilHelper

#region檢測指定目錄是否存在

///summary

///檢測指定目錄是否存在,如果存在則返回true。

////summary

///paramname="directoryPath"目錄的絕對路徑/param

publicstaticboolIsExistDirectory(stringdirectoryPath)

returnDirectory.Exists(directoryPath);

#endregion

#region檢測指定文件是否存在

///summary

///檢測指定文件是否存在,如果存在則返回true。

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticboolIsExistFile(stringfilePath)

returnFile.Exists(filePath);

#endregion

#region檢測指定目錄是否為空

///summary

///檢測指定目錄是否為空

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

publicstaticboolIsEmptyDirectory(stringdirectoryPath)

//判斷是否存在文件

string[]fileNames=GetFileNames(directoryPath);

if(fileNames.Length0)

returnfalse;

//判斷是否存在文件夾

string[]directoryNames=GetDirectories(directoryPath);

if(directoryNames.Length0)

returnfalse;

returntrue;

catch(Exceptionex)

throwex;

#endregion

#region檢測指定目錄中是否存在指定的文件

///summary

///檢測指定目錄中是否存在指定的文件,若要搜索子目錄請使用重載方法.

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

///paramname="searchPattern"模式字符串,"*"代表0或N個字符,""代表1個字符。

///范例:"Log*.xml"表示搜索所有以Log開頭的Xml文件。/param

publicstaticboolIsContainsFile(stringdirectoryPath,stringsearchPattern)

//獲取指定的文件列表

string[]fileNames=GetFileNames1(directoryPath,searchPattern,false);

//判斷指定文件是否存在

if(fileNames.Length==0)

returnfalse;

else

returntrue;

catch(Exceptionex)

throwex;

publicstaticstring[]GetFileNames1(stringdirectoryPath,stringsearchPattern,boolisSearchChild)

//如果目錄不存在,則拋出異常

if(!IsExistDirectory(directoryPath))

thrownewFileNotFoundException();

if(isSearchChild)

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.AllDirectories);

else

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.TopDirectoryOnly);

catch(IOExceptionex)

throwex;

///summary

///檢測指定目錄中是否存在指定的文件

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

///paramname="searchPattern"模式字符串,"*"代表0或N個字符,""代表1個字符。

///范例:"Log*.xml"表示搜索所有以Log開頭的Xml文件。/param

///paramname="isSearchChild"是否搜索子目錄/param

publicstaticboolIsContainsFile(stringdirectoryPath,stringsearchPattern,boolisSearchChild)

//獲取指定的文件列表

string[]fileNames=GetFileNames2(directoryPath,searchPattern,true);

//判斷指定文件是否存在

if(fileNames.Length==0)

returnfalse;

else

returntrue;

catch(Exceptionex)

throwex;

publicstaticstring[]GetFileNames2(stringdirectoryPath,stringsearchPattern,boolisSearchChild)

//如果目錄不存在,則拋出異常

if(!IsExistDirectory(directoryPath))

thrownewFileNotFoundException();

if(isSearchChild)

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.AllDirectories);

else

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.TopDirectoryOnly);

catch(IOExceptionex)

throwex;

#endregion

#region創(chuàng)建一個目錄

///summary

///創(chuàng)建一個目錄

////summary

///paramname="directoryPath"目錄的絕對路徑/param

publicstaticvoidCreateDirectory(stringdirectoryPath)

//如果目錄不存在則創(chuàng)建該目錄

if(!IsExistDirectory(directoryPath))

Directory.CreateDirectory(directoryPath);

#endregion

#region創(chuàng)建一個文件

///summary

///創(chuàng)建一個文件

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticvoidCreateFile(stringfilePath)

//如果文件不存在則創(chuàng)建該文件

if(!IsExistFile(filePath))

//創(chuàng)建一個FileInfo對象

FileInfofile=newFileInfo(filePath);

//創(chuàng)建文件

FileStreamfs=file.Create();

//關(guān)閉文件流

fs.Close();

catch(Exceptionex)

throwex;

///summary

///創(chuàng)建一個文件,并將字節(jié)流寫入文件。

////summary

///paramname="filePath"文件的絕對路徑/param

///paramname="buffer"二進制流數(shù)據(jù)/param

publicstaticvoidCreateFile(stringfilePath,byte[]buffer)

//如果文件不存在則創(chuàng)建該文件

if(!IsExistFile(filePath))

//創(chuàng)建一個FileInfo對象

FileInfofile=newFileInfo(filePath);

//創(chuàng)建文件

FileStreamfs=file.Create();

//寫入二進制流

fs.Write(buffer,0,buffer.Length);

//關(guān)閉文件流

fs.Close();

catch(Exceptionex)

throwex;

#endregion

#region獲取文本文件的行數(shù)

///summary

///獲取文本文件的行數(shù)

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticintGetLineCount(stringfilePath)

//將文本文件的各行讀到一個字符串?dāng)?shù)組中

string[]rows=File.ReadAllLines(filePath);

//返回行數(shù)

returnrows.Length;

#endregion

#region獲取一個文件的長度

///summary

///獲取一個文件的長度,單位為Byte

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticintGetFileSize(stringfilePath)

//創(chuàng)建一個文件對象

FileInfofi=newFileInfo(filePath);

//獲取文件的大小

return(int)fi.Length;

#endregion

#region獲取指定目錄中的文件列表

///summary

///獲取指定目錄中所有文件列表

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

publicstaticstring[]GetFileNames(stringdirectoryPath)

//如果目錄不存在,則拋出異常

if(!IsExistDirectory(directoryPath))

thrownewFileNotFoundException();

//獲取文件列表

returnDirectory.GetFiles(directoryPath);

///summary

///獲取指定目錄及子目錄中所有文件列表

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

///paramname="searchPattern"模式字符串,"*"代表0或N個字符,""代表1個字符。

///范例:"Log*.xml"表示搜索所有以Log開頭的Xml文件。/param

///paramname="isSearchChild"是否搜索子目錄/param

publicstaticstring[]GetFileNames(stringdirectoryPath,stringsearchPattern,boolisSearchChild)

//如果目錄不存在,則拋出異常

if(!IsExistDirectory(directoryPath))

thrownewFileNotFoundException();

if(isSearchChild)

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.AllDirectories);

else

returnDirectory.GetFiles(directoryPath,searchPattern,SearchOption.TopDirectoryOnly);

catch(IOExceptionex)

throwex;

#endregion

#region獲取指定目錄中的子目錄列表

///summary

///獲取指定目錄中所有子目錄列表,若要搜索嵌套的子目錄列表,請使用重載方法.

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

publicstaticstring[]GetDirectories(stringdirectoryPath)

returnDirectory.GetDirectories(directoryPath);

catch(IOExceptionex)

throwex;

///summary

///獲取指定目錄及子目錄中所有子目錄列表

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

///paramname="searchPattern"模式字符串,"*"代表0或N個字符,""代表1個字符。

///范例:"Log*.xml"表示搜索所有以Log開頭的Xml文件。/param

///paramname="isSearchChild"是否搜索子目錄/param

publicstaticstring[]GetDirectories(stringdirectoryPath,stringsearchPattern,boolisSearchChild)

if(isSearchChild)

returnDirectory.GetDirectories(directoryPath,searchPattern,SearchOption.AllDirectories);

else

returnDirectory.GetDirectories(directoryPath,searchPattern,SearchOption.TopDirectoryOnly);

catch(IOExceptionex)

throwex;

#endregion

#region向文本文件寫入內(nèi)容

///summary

///向文本文件中寫入內(nèi)容

////summary

///paramname="filePath"文件的絕對路徑/param

///paramname="content"寫入的內(nèi)容/param

publicstaticvoidWriteText(stringfilePath,stringcontent)

//向文件寫入內(nèi)容

File.WriteAllText(filePath,content);

#endregion

#region向文本文件的尾部追加內(nèi)容

///summary

///向文本文件的尾部追加內(nèi)容

////summary

///paramname="filePath"文件的絕對路徑/param

///paramname="content"寫入的內(nèi)容/param

publicstaticvoidAppendText(stringfilePath,stringcontent)

File.AppendAllText(filePath,content);

#endregion

#region將現(xiàn)有文件的內(nèi)容復(fù)制到新文件中

///summary

///將源文件的內(nèi)容復(fù)制到目標(biāo)文件中

////summary

///paramname="sourceFilePath"源文件的絕對路徑/param

///paramname="destFilePath"目標(biāo)文件的絕對路徑/param

publicstaticvoidCopy(stringsourceFilePath,stringdestFilePath)

File.Copy(sourceFilePath,destFilePath,true);

#endregion

#region將文件移動到指定目錄

///summary

///將文件移動到指定目錄

////summary

///paramname="sourceFilePath"需要移動的源文件的絕對路徑/param

///paramname="descDirectoryPath"移動到的目錄的絕對路徑/param

publicstaticvoidMove(stringsourceFilePath,stringdescDirectoryPath)

//獲取源文件的名稱

stringsourceFileName=GetFileName(sourceFilePath);

if(IsExistDirectory(descDirectoryPath))

//如果目標(biāo)中存在同名文件,則刪除

if(IsExistFile(descDirectoryPath+"\\"+sourceFileName))

DeleteFile(descDirectoryPath+"\\"+sourceFileName);

//將文件移動到指定目錄

File.Move(sourceFilePath,descDirectoryPath+"\\"+sourceFileName);

#endregion

#region從文件的絕對路徑中獲取文件名(包含擴展名)

///summary

///從文件的絕對路徑中獲取文件名(包含擴展名)

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticstringGetFileName(stringfilePath)

//獲取文件的名稱

FileInfofi=newFileInfo(filePath);

returnfi.Name;

#endregion

#region從文件的絕對路徑中獲取文件名(不包含擴展名)

///summary

///從文件的絕對路徑中獲取文件名(不包含擴展名)

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticstringGetFileNameNoExtension(stringfilePath)

//獲取文件的名稱

FileInfofi=newFileInfo(filePath);

returnfi.Name.Split('.')[0];

#endregion

#region從文件的絕對路徑中獲取擴展名

///summary

///從文件的絕對路徑中獲取擴展名

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticstringGetExtension(stringfilePath)

//獲取文件的名稱

FileInfofi=newFileInfo(filePath);

returnfi.Extension;

#endregion

#region將文件讀取到緩沖區(qū)中

///summary

///將文件讀取到緩沖區(qū)中

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticbyte[]FileToBytes(stringfilePath)

//獲取文件的大小

intfileSize=GetFileSize(filePath);

//創(chuàng)建一個臨時緩沖區(qū)

byte[]buffer=newbyte[fileSize];

//創(chuàng)建一個文件流

FileInfofi=newFileInfo(filePath);

FileStreamfs=fi.Open(FileMode.Open);

//將文件流讀入緩沖區(qū)

fs.Read(buffer,0,fileSize);

returnbuffer;

catch(IOExceptionex)

throwex;

finally

//關(guān)閉文件流

fs.Close();

#endregion

#region將文件讀取到字符串中

///summary

///將文件讀取到字符串中

////summary

///paramname="filePath"文件的絕對路徑/param

///paramname="encoding"字符編碼/param

publicstaticstringFileToString(stringfilePath,Encodingencoding)

//創(chuàng)建流讀取器

StreamReaderreader=newStreamReader(filePath,encoding);

//讀取流

returnreader.ReadToEnd();

catch(Exceptionex)

throwex;

finally

//關(guān)閉流讀取器

reader.Close();

#endregion

#region清空指定目錄

///summary

///清空指定目錄下所有文件及子目錄,但該目錄依然保存.

////summary

///paramname="directoryPath"指定目錄的絕對路徑/param

publicstaticvoidClearDirectory(stringdirectoryPath)

if(IsExistDirectory(directoryPath))

//刪除目錄中所有的文件

string[]fileNames=GetFileNames(directoryPath);

for(inti=0;ifileNames.Length;i++)

DeleteFile(fileNames[i]);

//刪除目錄中所有的子目錄

string[]directoryNames=GetDirectories(directoryPath);

for(inti=0;idirectoryNames.Length;i++)

DeleteDirectory(directoryNames[i]);

#endregion

#region清空文件內(nèi)容

///summary

///清空文件內(nèi)容

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticvoidClearFile(stringfilePath)

//刪除文件

File.Delete(filePath);

//重新創(chuàng)建該文件

CreateFile(filePath);

#endregion

#region刪除指定文件

///summary

///刪除指定文件

////summary

///paramname="filePath"文件的絕對路徑/param

publicstaticvo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論