【发布时间】:2014-05-03 20:46:00
【问题描述】:
我正在尝试从文本文件中读取一组 IP 并将其添加到 IPAddress 类型列表中。在“listIPAdrrs.Add(IPAddress.Parse(list[i]));”行引发了一个异常
例外是
指定的 IP 地址无效。
List<string> list = new List<string>();
string text = System.IO.File.ReadAllText(@"D:\ips.txt");
String[] str = text.Split('\n');
for (int j = 0; j < str.Length; j++)
{
list.Add(str[j]);
}
List<IPAddress> listIPAdrrs = new List<IPAddress>();
for (int i = 0; i < list.Count; i++)
{
//Console.WriteLine(list[i]);
listIPAdrrs.Add(IPAddress.Parse(list[i]));
}
【问题讨论】:
-
异常似乎很简单——你提供了哪些不良数据
IPAddress.Parse? -
好吧,我会冒险猜测在抛出异常时该字符串不是循环中的有效 IP 地址! IPAddress 上是否有 TryParse 方法?甚至不知道那是整箱。
-
考虑改用
File.ReadAllLines,这样可以节省拆分和循环:List<string> list = new List<string>(System.IO.File.ReadAllLines(@"D:\ips.txt")); -
如果不把
ips.txt的内容也贴出来,实在是没办法确定这里的问题。 -
其他人已经告诉你大利出了什么问题。我最好的猜测是你的文件末尾有一个空行,这导致一个空字符串被传递给你的 parse 方法。 Try parse 可以很好地解决这个问题,尽管您可能会在解析之前显式检查空字符串,以便您可以将这种情况作为简单的跳过来处理,而不是您可能想要以不同方式处理的真正糟糕的文本行。跨度>
标签: c# list ip-address