FileStream fs = new FileStream(strFileName, FileMode.Open,FileAccess.Read);
StreamReader file = new StreamReader(fs,Encoding.GetEncoding("gb2312"));

解决方案 »

  1.   

    StreamReader sr = File.OpenText("F:\\STREETNAME.txt");==>
    StreamReader sr=new StreamReader("F:\\STREETNAME.txt",System.Text.Encoding.GetEncoding("GB2312"));
      

  2.   

    An unhandled exception of type 'System.PlatformNotSupportedException' occurred in mscorlib.dllAdditional information: PlatformNotSupportedException请问在PocketPC中该怎么办?是PocketPC不支持中文吗?
      

  3.   

    ⑥(读Text)StreamReader
    int a=0;
    StreamReader sr;
    switch(a)//3种打开方式
    {
    case 0:
    // sr=new StreamReader(@"d:\temp\b.txt",System.Text.Encoding.GetEncoding("GB2312") ,true);
    sr=new StreamReader(@"d:\temp\b.txt",System.Text.Encoding.Default,true);   
    break;
    case 1:
    FileStream fsr=new FileStream(@"d:\temp\b.txt",FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
    sr=new StreamReader(fsr,System.Text.Encoding .Default);
    break;
    default:
    FileInfo MyFile=new FileInfo(@"d:\temp\b.txt");
    sr=MyFile.OpenText();
    //用windows的记事本写的中文文件,这里无法读出(乱码),但用streamwrite写的文件可以读出
    break;
    }Console.WriteLine(sr.CurrentEncoding );
    string s;
    int nextchar;
    int i=0;
    //3种读出方式
    if(i==0)//逐行读出
    for(;true;)
    {
    s=sr.ReadLine();//逐行读出
    if(s!=null) Console.WriteLine(s);
    else break;
    //sr.ReadToEnd();//从当前位置开始将流的全部内容读完.
    }
    else if(i==1)//逐字读出,汉字也可以读出
    {
    while(sr.Peek()!=-1)//Peek并不会使指针向前移动,只是读一下而已
    {
    nextchar=sr.Read();//汉字也可以读出
    Console.WriteLine((char)nextchar);
    }
    }
    else if(i==2)//字串读出
    {
    int l;
    l=100;
    char[] chararr=new char[l];
    sr.Read(chararr,0,l);//虽然汉字占2个字节,但读取汉字的时候汉字只占一个位置
    for(int j=0;j<l;j++)
    Console.WriteLine(chararr[j]);
    }
    sr.Close();