【问题标题】:How to read chars from a file - c#如何从文件中读取字符 - c#
【发布时间】:2010-04-18 11:04:35
【问题描述】:

如何从文件中读取数字数组?我的意思是,如何从文件中读取字符?

更新: 我可以。 :) 只是:“1 2 3 4 5 6 7 8”等等。我只是不知道如何从文件中读取字符。

【问题讨论】:

  • 你能粘贴一个文件的例子吗?例如,将前几行粘贴到此处。
  • 文件是一个字节数组,为了读取字符,您需要知道文件的编码。您能否发布一个您尝试读取的文件的示例,或者如果它是一个二进制文件,请描述其结构。
  • "1 2 3 123 1231 12" 等等只是数字。
  • 我不需要被认为是完整的文件,我需要加载到一个数字数组中。
  • 谢谢大家的回答

标签: c# file file-io


【解决方案1】:
string[] numbers = File.ReadAllText("yourfile.txt").Split(' ');

或者您可以将它们转换为整数:

int[] numbers = File
    .ReadAllText("yourfile.txt")
    .Split(' ')
    .Select(int.Parse)
    .ToArray();

【讨论】:

  • 好吧,注意可能抛出异常的坏整数。
  • 在某些情况下,最好抛出异常以通知用户在解析文件时出现问题,而不是默默地忽略它。当然,这将完全取决于此处未详细说明的应用程序要求。
【解决方案2】:

如果您的文件不是太大,您可以使用例如ReadAllLines 将其全部读入内存,然后使用 TryParse 将字符串解释为整数。以下是您可以用作起点的一些示例代码:

List<int> integers = new List<int>();
foreach (string line in File.ReadAllLines(path))
{
    foreach (string item in line.Split(' '))
    {
        int i;
        if (!int.TryParse(item, out i))
        {
            throw new Exception("Implement error handling here");
        }

        integers.Add(i);
    }
}

如果您知道该文件将始终包含有效输入,您可以使用Parse 而不是TryParse 稍微简化一下。

【讨论】:

  • 我要投票支持处理异常的唯一答案。干得好!
猜你喜欢
  • 2014-06-06
  • 2014-01-21
  • 2012-02-04
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
相关资源
最近更新 更多