【发布时间】:2014-02-27 21:05:16
【问题描述】:
我正在尝试读取文本文件的某个部分。文本如下所示:
[HRZones]
195
175
156
0
[SwapTimes]
[Trip]
474
0
6616
-223
[HRData]
84 182 87 -222 129 4139
84 182 87 -222 129 4139
88 179 86 -222 133 3640
95 185 92 -222 136 3393
103 193 91 -222 123 4666
107 196 94 -222 125 5684
107 198 96 -222 128 4919
109 197 95 -222 131 4926
110 198 96 -222 134 4655
111 196 95 -222 126 4154
该文件实际上在 [HRData] 部分下包含更多行。
我正在尝试使用以下代码获取 [HRData}。可悲的是,这会锁定程序;断点显示这发生在第一个 while 循环中.. 几乎就像什么都看不到?
private void readFile()
{
//read the hrm file and split values
try
{
using (StreamReader sr = new StreamReader(file_name))
{
string line;
while ((line = sr.ReadLine()) != "[HRData]")
{
line = sr.ReadLine(); // FAILS HERE..
}
while((line = sr.ReadLine()) != null)
{
string split = line;
string[] values = split.Split('\t');
foreach (String value in values)
{
hrdata[i, j] = int.Parse(value);
i++;
if (i > 5)
{
i = 0;
j++;
}
}
}
}
}
文件名是从先前的检查中传递的,数据看起来不错。
【问题讨论】:
-
您在将其中一行与
[HRData]进行比较之前一次读取两行...您需要摆脱循环内的line = sr.ReadLine();,这样您就只能一次读取一行时间。 -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# split streamreader readline