从文本文件中读取整数时的意外数量的值

时间:2013-05-19 14:17:18

标签: c#

我正在从文本文件中读取整数到int数组,因此我使用以下代码。但它似乎没有读入预期的整数数:

string fileContent = File.ReadAllText("D:\\pixels.txt");
TextWriter tw = new StreamWriter("D:\\print.txt");
string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
int[] integers = new int[integerStrings.Length];
for (int n = 0; n < integerStrings.Length; n++)
{
    integers[n] = int.Parse(integerStrings[n]);
    tw.Write(integers[n]+" ");
}
tw.Write(integers.Length+" "+integerStrings.Length+" ");

在文件(tw)中,我打印了所有整数,但integers.LengthintegerStrings.Length不正确。他们应该是262,144,但他们都是41,616。 我想不出任何问题。

1 个答案:

答案 0 :(得分:1)

试试这个:

int dummyInt;
var integers = File.ReadAllText("C:\\temp\\pixels.txt")
                   .Split(new char[] { ' ', '\r', '\n' })
                   .Select(n => (int?)(Int32.TryParse(n, out dummyInt)
                              ? dummyInt
                              : (int?)null))
                   .Where(n => n.HasValue)
                   .Select(n => n.Value)
                   .ToArray();

上面的代码应该为您提供一个从输入文件中读取的整数数组,按' '和新行分割,只选择可以转换为Int32的这些值。

相关问题