C#讀取中文字符及清空緩沖區(qū)的實(shí)現(xiàn)代碼
更新時(shí)間:2010年12月06日 16:26:06 作者:
有一個txt的中英文語料庫文件,內(nèi)容是英文一句中文一句相間的,共3000行,需要把英文句和中文句分開,放在單獨(dú)的txt文件中。
開時(shí)始,得到的中文文件中的字符是亂碼的,鳥符號看的頭暈。于是就細(xì)究streamreader讀取的編碼格式,默認(rèn)的編碼是ascii,單字節(jié)的,就嘗試utf8,亂碼;嘗試gb2312,OK!
可另一個問題又出現(xiàn)了,得到的兩個文件的行數(shù)都不到1500行,嘗試N次還是不行,很郁悶。google了下,看到try catch,就想到釋放緩沖區(qū),結(jié)果很HAPPY!
private static void FnFileProcess()
{
StreamReader reader = new StreamReader(@"d:\1500.txt", Encoding.GetEncoding("GB2312"));
StreamWriter writerEn = new StreamWriter(@"d:\English.txt", false, Encoding.UTF8, 1024);
StreamWriter writerCh = new StreamWriter(@"d:\Chinese.txt", false, Encoding.UTF8, 1024);
try
{
int i = 1;
for (String line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
if (i % 2 == 1)
{
writerEn.WriteLine(line);
}
else
{
writerCh.WriteLine(line);
}
i++;
}
Console.WriteLine(i + "\tOK");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
//不清空緩沖區(qū),得到的文件總是少幾十行
writerEn.Flush();
writerCh.Flush();
}
}
可另一個問題又出現(xiàn)了,得到的兩個文件的行數(shù)都不到1500行,嘗試N次還是不行,很郁悶。google了下,看到try catch,就想到釋放緩沖區(qū),結(jié)果很HAPPY!
復(fù)制代碼 代碼如下:
private static void FnFileProcess()
{
StreamReader reader = new StreamReader(@"d:\1500.txt", Encoding.GetEncoding("GB2312"));
StreamWriter writerEn = new StreamWriter(@"d:\English.txt", false, Encoding.UTF8, 1024);
StreamWriter writerCh = new StreamWriter(@"d:\Chinese.txt", false, Encoding.UTF8, 1024);
try
{
int i = 1;
for (String line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
if (i % 2 == 1)
{
writerEn.WriteLine(line);
}
else
{
writerCh.WriteLine(line);
}
i++;
}
Console.WriteLine(i + "\tOK");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
//不清空緩沖區(qū),得到的文件總是少幾十行
writerEn.Flush();
writerCh.Flush();
}
}
您可能感興趣的文章:
- C#環(huán)形緩沖區(qū)(隊(duì)列)完全實(shí)現(xiàn)
- 關(guān)于C#?調(diào)用Dll?傳遞字符串指針參數(shù)的問題
- C#調(diào)用帶結(jié)構(gòu)體指針Dll的方法
- 深入理解C#指針之美
- 關(guān)于C#調(diào)用C++dll傳指針釋放內(nèi)存問題
- C#實(shí)現(xiàn)復(fù)制數(shù)據(jù)庫 C#將A數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)到B數(shù)據(jù)庫
- C#使用SqlBulkCopy批量復(fù)制數(shù)據(jù)到數(shù)據(jù)表
- C#固定大小緩沖區(qū)及使用指針復(fù)制數(shù)據(jù)詳解
相關(guān)文章
Entity?Framework?Core相關(guān)包的概念介紹與安裝
這篇文章介紹了Entity?Framework?Core相關(guān)包的概念與安裝方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03asp.net下用Aspose.Words for .NET動態(tài)生成word文檔中的數(shù)據(jù)表格的方法
導(dǎo)出word 文檔,要求這個文檔的格式不是固定的,用戶可以隨便的調(diào)整,導(dǎo)出內(nèi)容中的數(shù)據(jù)表格列是動態(tài)的,例如要求導(dǎo)出姓名和性別,你就要導(dǎo)出這兩列的數(shù)據(jù),而且這個文檔不是導(dǎo)出來之后再調(diào)整而是導(dǎo)出來后已經(jīng)是調(diào)整過了的。2010-04-04c# 讀取文件內(nèi)容存放到int數(shù)組 array.txt
c# 讀取文本的內(nèi)容,并且將內(nèi)容保存到int數(shù)組中,大家可以學(xué)習(xí)到c#一些數(shù)組跟讀取內(nèi)容的函數(shù)。2009-04-04判斷WebBrowser瀏覽器網(wǎng)頁加載完成的處理方法
.net 中通過 SqlConnection 連接 sql server,我們會發(fā)現(xiàn)第一次連接時(shí)總是很耗時(shí),但后面連接就很快,這個其實(shí)和SqlConnection 的連接池機(jī)制有關(guān),正確的理解這個連接池機(jī)制,有助于我們編寫高效的數(shù)據(jù)庫應(yīng)用程序。2013-04-04深入本機(jī)影像生成器(Ngen.exe)工具使用方法詳解
本篇文章是對本機(jī)影像生成器(Ngen.exe)工具使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05HTTP協(xié)議下用Web Service上傳大文件的解決方案
HTTP協(xié)議下用Web Service上傳大文件的解決方案...2007-04-04asp.net Accee數(shù)據(jù)庫連接不穩(wěn)定解決方案
我最最進(jìn)做了個網(wǎng)站,我是用VS2005 + Access 數(shù)據(jù)庫連接,可以我在連接的時(shí)候總是出現(xiàn)連接不穩(wěn)定的情況,同樣的代碼,一個字也沒改,就是連接不上,但是有的又連接的上。真是郁悶,真是弄死人。2009-07-07asp.net Repeater取得CheckBox選中的某行某個值
Repeater取得CheckBox選中的某行某個值的實(shí)現(xiàn)代碼2008-07-07