使用文件读取将整数添加到列表或数组中

时间:2017-01-10 11:12:32

标签: c# file-handling

我有一个带有一些数字的.txt文件

File:
1
2
3
4

我希望有一个方法可以读取这些数字并将它们添加到列表或数组中,然后将其显示在消息框中。

我现在有这个:

public void LaadVrijeKamers()
        {
            int KamerNummers = Convert.ToInt32(File.ReadAllText(@"x\Vrijekamers.txt"));
            MessageBox.Show(Convert.ToString(KamerNummers));
        }

我在荷兰语中收到错误,其中包含以下内容:

Can not read the characters

我认为File.ReadAllText仅适用于Strings,但我不确定。也许我转错了。

5 个答案:

答案 0 :(得分:5)

尝试逐行阅读并将字符串转换为整数:

var numbers = File.ReadLines(@"C:\path\numbers.txt").Select(int.Parse).ToList();

答案 1 :(得分:2)

File.ReadAllLines()返回一个字符串数组。 Convert.ToInt32只需一个字符串。

您需要遍历文件中的每个字符串并一次转换一个。

答案 2 :(得分:2)

File.ReadAllText失败,因为它返回所有不可转换为整数的文本。您应该尝试以下内容:

int intList = File.ReadAllLines()
                  -- get only lines with numbers
                  .Where(l => {
                      int val;
                      bool isOk = int.TryParse(l, out value);
                      return isOk;
                  }
                  -- actual conversion
                  .Select(l => Convert.ToInt32(l)
                  .ToList();

答案 3 :(得分:1)

嗯,你可以在这里使用LINQ方法的组合:

    public void LaadVrijeKamers()
    {
        var KamerNummers =    File.ReadAllLines(@"x\Vrijekamers.txt")
                              .Skip(1)                      //Skips file header (if needed)
                              .Select(Int32.Parse)          //Converts to int
                              .ToList();                    //Returns List

        // To display numbers we'd first have to create a string from our list
        MessageBox.Show(string.Concat(KamerNummers.Select(n => n.ToString() + ", ")));
    }

答案 4 :(得分:1)

没有Linq查询

public static void MethodSort(int[] array)
    {
        foreach (int i in array)
        {
            Console.Write(" {0}", i);
        }
    }