临时参数的txt文件里面有一行:
ABCD/////0--6 0:循环控制 1:单词控制 2:多次控制 3:保留 4:保留 5:开环控制然后我用命令来读取,命令如下:            
StreamReader linshiduqu= new StreamReader("./临时参数.txt", System.Text.Encoding.GetEncoding("GB2312"));
            string linshi = "";
            while (true)
            {
                linshi= linshiduqu.ReadLine();
                if (!string.IsNullOrEmpty(linshi))
                {
                    string[] linshilist= linshi.Split(' ');
                    .......
                 }
             }利用中断模式调节发现,读取这一行后(linshi= linshiduqu.ReadLine()),“linshi”这个字符串却却只有“ABCD/////0--6”,后面的却丢了!!!!中断再一次循环(即读取下一行的时候),却读到了“0:循环控制”,后面的也没有!
也就是会所这样的写法读不全整整一行,! 这到底是为什么???
我要的结果是,读取一次后,就将“ABCD/////0--6 0:循环控制 1:单词控制 2:多次控制 3:保留 4:保留 5:开环控制”完成的读上来!请问怎么处理??谢谢了,我很急,谢谢各位高手了!!!

解决方案 »

  1.   

    只有这一行的话用linshiduqu.ReadToEnd();
      

  2.   

    可能是编码问题导致的,看看这篇文章希望对你有帮助:
    http://support.microsoft.com/kb/889835/zh-cn
      

  3.   

    你的txt文件的编码和你解码的encoding不一致吧  
    StreamReader linshiduqu= new StreamReader("./临时参数.txt", System.Text.Encoding.GetEncoding("GB2312"),true);这句话的意思就是 程序先去找txt是用什么字符集的什么编码保存的  如果能找到就用txt原先保存的编码格式去解码   如果没有就用GB2312去解码最好还是确定一致后再解码比较好
      

  4.   

    StreamReader dt = new StreamReader(.....);
    string lt;  
      while ((lt = dt.ReadLine()) != null)   //换成这样试试
        {  
             .....
         }
      

  5.   

    是不是你读取完数据,最后没有调用.close()方法啊?我之前也遇到过类似情况,调用后就可以了。
      

  6.   

    建议全部读取完后在拆分
    而且拆分最好别用空格 设置一个符号拆分
    其实最好的方法别用txt文件
    参数神马的用ini或xml啊
      

  7.   

    谢谢大家的指教 我刚刚的问题找到了: 原因是应为我是从excel中拷贝数据到txt中的,所以在txt中肉眼看上去没有回车符,其实在某些地方它是存在的,我把它们去掉,或者全部手工打字,句号了
      

  8.   

    估计是这一行含有回车符好造成的  可以把读取到的转成一个数据  一行数据就是数组中的一个元素贴上关键代码:
     StreamReader sr = new StreamReader(filePath, System.Text.Encoding.UTF8);
      allLine = sr.ReadToEnd();
    string[] arr = allLine.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);