在读取获取打印日志内容时超过一定次数就出现索引超出数组界限

lm1473 2015-03-17 04:50:55
通过标签获得日志文件详细路径及名称,通过读取文本内容来获取想要的日志信息
代码如下:

string Fname, Fsize, Fnum, Fuser, Fuserip, Fdata,Fprint;
//文件名称,大小,张数,用户,用户IP,日期时间,打印机
int i = 0;
StreamReader sr = new StreamReader(Label2.Text,Encoding.Default);
string strLine = sr.ReadLine();
while (strLine != null)
{
i = i+1;
if (i > 9) { break; }

string[] str = strLine.Split('\t');
if (str[2] == "Print") //事件为Print则提取相关信息
{
Fdata = strLine.Split('\t')[0] + " " + strLine.Split('\t')[1]; //获得打印时间日期
string strPrt = strLine.Split('\t')[8].Replace('\"',' ').Trim(); //日志内容
string[] str_a = strPrt.Split(',');
Fuser = str_a[0].Split(' ')[0].Trim();//获得打印用户
Fnum = str_a[2].Split(':')[1].Trim();//获得打印张数
string[] str_b = str_a[1].Replace("已通过 IP_", "|").Replace("端口在", "|").Replace("打印。", "|").Split('|');
Fsize = str_b[3].Replace("字节大小: ", "").Trim();//获得文件大小
Fprint = str_b[2].Trim();//获得打印机
Fuserip = str_b[1].Trim();//获得用户IP
Fname = str_b[0].Replace("Model (1)", "").Trim();

str_a = null;
str_b = null;
strPrt = "";
}
str = null;

strLine = sr.ReadLine();

}
sr.Close();


i>9就会出现 索引超出数组界限
...全文
273 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-03-18
  • 打赏
  • 举报
回复
你先把txt里的\t都替换成逗号,再数到底一行有几个逗号,不要看有空白就以为是\t
於黾 2015-03-18
  • 打赏
  • 举报
回复
既然是循环到9才出错,你好歹把后面的数据贴上来看,光贴前4行不出错的数据有什么用? 而且你确定看到的是\t,而不是空格?这东西在文本文档里显示成什么真的说不准
lm1473 2015-03-17
  • 打赏
  • 举报
回复
第一次用\t来分割的时候,得到的数组长度是9,这个是不变的;
lm1473 2015-03-17
  • 打赏
  • 举报
回复
实验过,日志文件格式没有错误!
出错代码,凡用到数组的地方都报错

以下附上日志内容两行:

2015/3/2 14:56:52 Print 信息 无 10 domain\u4064 PRINT u4064 拥有的文档 214, Microsoft Word - 文档2 已通过 IP_172.16.2.241 端口在 TOSHIBA e-STUDIO455Series PCL6 打印。字节大小: 94106, 打印页数: 1
2015/3/2 14:56:34 Print 信息 无 10 domain\u0947 PRINT u0947 拥有的文档 213, 间接材料.xls 已通过 IP_172.16.3.253 端口在 生产部 打印。字节大小: 34240, 打印页数: 1
  • 打赏
  • 举报
回复
感觉应该是日志格式不正确。可以先看看你的日志内容在看代码。
於黾 2015-03-17
  • 打赏
  • 举报
回复
目测这个日志并不是只一个地方在写入,肯定还有其他地方往里面写入了其他内容,而内容的格式并没有一大堆\t在里面 你自己先打开日志文件看看,不要光纠结代码
於黾 2015-03-17
  • 打赏
  • 举报
回复
你好歹告诉我们,出错的代码行是哪一行,不要让我们猜啊 而且你下标全部写死,也没加判断 如果某一行没有那么多\t,当然就索引超界限了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧