不要使用 reader.Peek() 去读取每行数据
1.问题描述
使用SteamRead的Peek()和ReadLine()来读取流中的数据,如果数据行数太多,会读取不完整(后面有些数据就读不出来了)。
比如:
while (srResponseReader.Peek() > 0)
{
string line = srResponseReader.ReadLine();
if (!String.IsNullOrEmpty(line))
builder.Append(line);
}
最好使用:
while ((line = srResponseReader.ReadLine())!=null)
{
if (!String.IsNullOrEmpty(line))
builder.Append(line);
}
public static string GetHttpWebResponse(string appUrl)
{
var wrWebRequest = WebRequest.Create(appUrl) as HttpWebRequest;
if (wrWebRequest != null)
{
wrWebRequest.Timeout = wrWebRequest.Timeout * ;
return GetHttpWebResponse(wrWebRequest);
}
return null;
}
public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
{
try
{
var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
{
using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
{
var builder = new StringBuilder();
while (srResponseReader.Peek() > )
{
string line = srResponseReader.ReadLine(); if (!String.IsNullOrEmpty(line))
builder.Append(line);
}
srResponseReader.Close();
return builder.ToString();
}
}
return "";
}
catch (Exception ex)
{
//LOG
return "";
}
}
最好使用下面的代码
public static string GetHttpWebResponse(HttpWebRequest wrWebRequest)
{
try
{
var hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); if (hwrWebResponse.StatusCode == HttpStatusCode.OK)
{
using (var srResponseReader = new StreamReader(hwrWebResponse.GetResponseStream()))
{
var builder = new StringBuilder();
while ((line = srResponseReader.ReadLine()) != null)
{
if (!String.IsNullOrEmpty(line))
builder.Append(line);
}
srResponseReader.Close();
return builder.ToString(); }
}
return "";
}
catch (Exception ex)
{
//LOG
return "";
}
}
或者一次性读出流:srResponseReader.ReadToEnd()
相关链接:
http://stackoverflow.com/questions/9376887/c-using-streamreader-to-read-line-from-txt-file-but-peek-return-1-even-the
不要使用 reader.Peek() 去读取每行数据的更多相关文章
- 关于C语言读取多行数据的问题
我有如下数据格式3360 2001 5 1750.5 1246.5 22.5 n 1775=1177-1316:13360 2001 5 1750.5 1 ...
- C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据
练习8.1:编写函数.接受一个istream&参数,返回值类型也是istream&.此函数必须从给定流中读取数据,直至遇到文件结束标识时停止. #include <iostrea ...
- ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据
使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.S ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
- Pandas_数据读取与存储数据(精炼)
# 一,读取 CSV 文件: # 文字解析函数: # pd.read_csv() 从文件中加载带分隔符的数据,默认分隔符为逗号 # pd.read_table() 从文件中加载带分隔符的数据,默认分隔 ...
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
- 使用Properties去读取配置文件,并获得具体内容值
有时候,写了一个配置文件,需要知道读出来的内容对不对,我们需要测试一下,看看读出来的跟我们要的是不是一样.这里写了一个工具类,用来读取配置文件里面的内容. 一.使用Properties工具类来读取. ...
- R语言学习笔记:读取前n行数据
常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...
- C#_.net core 3.0自定义读取.csv文件数据_解决首行不是标题的问题_Linqtocsv改进
linqtocsv文件有不太好的地方就是:无法设置标题的行数,默认首行就是标题,这不是很尴尬吗? 并不是所有的csv文件严格写的首行是标题,下面全是数据,我接受的任务就是读取很多.csv报表数据, ...
随机推荐
- (69)zabbix监控惠普打印机
假设公司有多个楼层或者分布在不同楼,打印机自然分布很广泛,打印机缺少油墨或者卡纸了,都需要员工找IT部门.我们使用zabbix对打印机进行监控,一旦缺少油墨,zabbix发出报警,it人员能够及时更换 ...
- 如何在微信中发送"相册"文件时有选择性地显示视频文件
相信很多微信用户在使用微信给朋友,同事发送相册中的文件时,微信会显示你手机中的视频文件,这样很不方便. 如果要完全不显示视频文件: 随便在手机中建立一个文件夹,名字叫 ".nomedia&q ...
- (转)webView清除缓存
NSURLCache * cache = [NSURLCache sharedURLCache]; [cache removeAllCachedResponses]; [cache setDiskCa ...
- Linux学习-仅执行一次的工作排程
atd 的启动与 at 运作的方式 要使用单一工作排程时,我们的 Linux 系统上面必须要有负责这个排程的服务,那就是 atd 这个玩 意儿. 不过并非所有的 Linux distributions ...
- Elasticsearch安装---安装jdk
1.在Linux 上检查Java版本是否满足要求: java -version 如果运行上面命令时报错:-bash: java: command not found,首先检查是否有jdk ,要是有安装 ...
- 取出列表中第N大的数
array=list(range(10)) random.shuffle(array) print(array) def func1(array,n): d,k={},n while k>0: ...
- 转:获取GridView中RowCommand的当前索引行
获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...
- linux 复制部分文件到另外的文件夹
show the command: |xargs -i cp {} ../ 或者指定目录 |xargs -i cp {} /home/peter
- Linux免密远程登陆
上一节讲到伪分布式部署,启动后需要输入4次密码,停止服务后也要输入4次密码.本节记录免密登陆原理和实践 假设有2台服务器(A和B)(这是配置原理) 1)A需要远程登录B服务器,那么A就要创建密钥对(私 ...
- javascript学习笔记 - 变量、作用域和内存问题
一 垃圾收集 javascript具有自动垃圾收集机制.由垃圾收集机制标找出不再使用的变量.按照固定间隔的时间进行销毁,释放内存. 1.找出不再使用的变量的方法,如下: 1-1.标记清除 垃圾回收器 ...