C#讀取中文字符及清空緩沖區(qū)的實現(xiàn)代碼
更新時間:2010年12月06日 16:26:06 作者:
有一個txt的中英文語料庫文件,內(nèi)容是英文一句中文一句相間的,共3000行,需要把英文句和中文句分開,放在單獨的txt文件中。
開時始,得到的中文文件中的字符是亂碼的,鳥符號看的頭暈。于是就細(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();
}
}
相關(guān)文章
如何在ASP.NET Core中使用HttpClientFactory
這篇文章主要介紹了如何在ASP.NET Core中使用HttpClientFactory,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
Asp.net控制Tomcat啟動關(guān)閉的實現(xiàn)方法
近日有個項目客戶要求能自己配置相關(guān)權(quán)限。由于歷史原因這個項目采用的是公司以前的權(quán)限系統(tǒng)2012-01-01
C#反射(Reflection)對類的屬性get或set值實現(xiàn)思路
可以使用反射動態(tài)創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象獲取類型并調(diào)用其方法或訪問其字段和屬性,接下來為大家介紹下對一個類別的屬性進(jìn)行set和get值,感興趣的各位可以參考下哈2013-03-03
.Net Core學(xué)習(xí)教程之在Mvc中簡單的使用日志組件
這篇文章主要給大家介紹了關(guān)于.Net Core學(xué)習(xí)教程之在Mvc中簡單使用日志組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
ASP.NET怎么操作DataTable實例應(yīng)用
有機會在博客園的博問頻道上看到一個問題,《ASP.NET怎么操作DataTable》;需要的朋友可以參考下2012-11-11
ASP.Net頁尾中添加JavaScript的最佳方法實戰(zhàn)分享
將JavaScript腳本或庫添加到asp.net頁的末尾方法有很多,究竟哪一個最好使呢有利于日后的維護(hù)啊,是個疑點啊,本文的出現(xiàn)將幫你解決所有的困惑,感興趣的你可不要錯過了哈2013-02-02

