打造乙個簡單實用的的TXT文字操作及日誌框架

2021-08-21 20:30:34 字數 2575 閱讀 1935

首先先介紹一下這個專案,該專案實現了文字寫入及讀取,日誌寫入指定資料夾或缺省資料夾,日誌數量控制,單個日誌大小控制,通過約定的引數讓使用者可以用更少的**解決問題。

1.讀取文字檔案方法

使用:jiyuwu.txt.txthelper.readtostring(「檔案物理路徑」)

public static string readtostring(string path)

sr.close();

sr.dispose();

return sb.tostring();

}catch (ioexception e)

finally

}

實現解析:

(1.為防止任務讀取當我們進行讀取時需要新增讀取鎖保證可以依次讀取,否則可能出現被占用異常。

(2.建立讀取流streamreader(注意:由於會出現亂碼這裡要改一下把預設改為encoding.utf8),依次讀取每一行。

(3.讀取完成釋放資源。並解鎖。

2.寫入文字檔案方法

(1.建立文字並寫入

使用:jiyuwu.txt.txthelper.createwrite(「檔案物理路徑」,「文字內容」)

public static bool createwrite(string path, string context)

catch (exception ex)

finally

}

(2.在文字檔案末尾追加寫入

catch (exception ex)

finally

}(3.自動判斷換行追加或建立文字

else

return b;

}catch (exception ex)

finally

}實現解析:

(1)為防止多工讀取當我們進行讀取時需要新增讀取鎖保證可以依次寫入,否則可能出現被占用異常。

(2)建立文字流filestream及寫入流streamwriter,直接進行資料寫入。

(3)讀取完成釋放資源。並解鎖。

3.寫入日誌

使用:jiyuwu.txt.txthelper.writelog(「文字內容」,「單個檔案大小(選填預設1m)」,「目錄下檔案數量(選填預設20個)」,「輸出目錄(選填預設bin檔案下)」)

public static void writelog(string content, int filesize = 1, int filecount = 20, string filepath = "")

loglock.enterwritelock();

logpath = logpath.replace("file:\\", "");//這裡為了相容webapi的情況

string datastring = datetime.now.tostring("yyyy-mm-dd");

string path = logpath + "\\mylog";

if (!directory.exists(path))

else

for (int i = 0; i < filepatharr.length; i++)

filecreatedate = filecreatedate.orderby(f => f.value).todictionary(f => f.key, f => f.value);

fileinfo fileinfo = new fileinfo(filecreatedate.last().key);

if (fileinfo.length < 1024 * 1024 * filesize)

else

if (x > filecount)

}filestream fs2 = new filestream(path, filemode.open, fileaccess.write);

streamwriter sw = new streamwriter(fs2);

long fl = fs2.length;

fs2.seek(fl, seekorigin.begin);

sw.writeline(datetime.now.tostring("hh:mm:ss") + "---> " + content);

sw.flush();

sw.close();

fs2.close();

}catch (exception ex)

finally

}

實現解析(以全部預設引數為例說明):

(1.為防止多工進行操作,於是對文件加乙個寫入鎖,否則可能出現被占用異常。

(2.檢測檔案目錄是否已存在,不存在則建立目錄並建立日誌檔案,存在就判斷檔案數量和大小,檔案大小超過設定的值或預設值就新建乙個文字,檔案數量超過預設值或設定值就刪除最早的乙個檔案。

(3.寫入到指定檔案。

(4.完成釋放資源。並解鎖。

(可能存在沒有測到的bug,出現的問題可以反饋給我,謝謝您的支援)。

問題彙總:

bug1:程式包中讀取txt可能出現亂碼,讀取流中改一下把預設改為encoding.utf8應該就可以了。

打造乙個簡單實用的安卓廣告欄控制項

在迴圈 viewpager 的兩種實現方法這篇文章中介紹了廣告欄的兩種實現思路,但是直接用到專案中還是會有不少問題。能否將兩種方法結合起來呢,比如我將count設為200個,每次滑動到最後一頁或者第一頁的時候再執行setcurrentitem middleitem 當然,我還需要對滑出去的view做...

乙個簡單實用的分頁控制項

using system using system.web using system.web.ui using system.web.ui.webcontrols using system.text namespace localhost set 頁長度 public int pagesize se...

乙個簡單而實用的make檔案

原來一直都是手工為專案維護乙個make檔案,特別是檔案越來越來多的時候,維護make檔案就成了乙個很大的負擔,其實gnu make還提供了乙個函式 wildcard wildcard 可以生成源程式檔案列表。project ptest libs lpthread source wildcard sr...