如何从给定的数据文件中读取?

时间:2010-11-10 18:59:06

标签: c# file-io

我在大学学习计算机科学。

这实际上是我的第一个重要任务,但他们还没有教会我们如何在其中做主要部分。

我需要帮助的是我的程序必须从.dat源文件中获取其信息,并使用该.dat文件中的信息来执行其等级计算等。 他们还没有教过我们(我不认为他们会在作业日期之前),如何从这个源文件中获取信息!

.dat文件格式包含由空格分隔的单个字符串:

  

A B C A D F E

我非常感谢任何人可以在这方面为我提供的帮助!

4 个答案:

答案 0 :(得分:4)

假设您的文件是纯文本,并且每条记录都是一行......那么您可以这样做:

var lines = File.ReadAllLines("grades.dat");

foreach(var line in lines)
{
    //Do some parsing here
}

你如何解析你的行将在很大程度上取决于你没有提供的格式。

UPDATE:

如果所有信息都包含在这样的一行中,那么它就更容易了。我不会给你解决方案,但你应该阅读几种方法:

File.ReadAllText

String.ToCharArray

Char.IsWhiteSpace

foreach,in

switch

这应该是完成工作所需的全部内容。快乐阅读:)

答案 1 :(得分:1)

取自here(不是我的作品):

StreamReader reader = new StreamReader("MyFile.dat");
string strAllFile = reader.ReadToEnd().Replace("\r\n", "\n").Replace("\n\r", "\n");
string[] arrLines = strAllFile.Split(new char[] { '\n' });
textBox1.Text = arrLines[0];
textBox2.Text = arrLines[2];

这是从.dat文件读取第一行并将其放入textbox1,然后读取第3行并使用数组将其放入textbox2中。

StreamWriter writer = new StreamWriter("MyFile.dat");
writer.WriteLine("Hello");
writer.WriteLine("World");

这是在.dat文件中将hello和world写入两行。

答案 2 :(得分:1)

如果没有关于文件格式的任何信息,我只能提供基本的东西。

打开文件的简要指南 http://www.csharp-examples.net/filestream-open-file/

阅读文件的简要指南 http://www.csharp-examples.net/filestream-read-file/

坦率地说,你会发现谷歌是你的朋友,你将在编程中学到的最重要的事情之一就是如何使用谷歌找到你需要的与你不相同的语言功能的信息

我在几秒钟内抓住了这两个教程,搜索“c#open file”,这是一个必不可少的第一步,虽然这比大多数地方更好,但是当你没有先做基础研究时,网上的人往往会做出消极反应

答案 3 :(得分:0)

您应该采取的第一步是写出您的计划将采取的步骤。

e.g。

  1. 开始跑步
  2. 加载dat文件
  3. 进行计算
  4. 使用计算结果
  5. 停止运行
  6. 这些任务中的每一项都可以分解为较小的任务,所以你也应该这样做,直到你可以编写一些代码为止。

    不了解您的文件格式,需要进行的计算,或者您打算如何处理计算结果意味着我无法再解释。

    一些基础知识:

    加载文件

    using(StreamReader sr = new StreamReader("filename.dat"))
    {
        //use your file here
        //e.g
        var lines = sr.ReadToEnd().Split(new [] {Environment.NewLine}, StringSplitOptions.None);
        //will read all of the lines in your file into an string[]
    }
    

    简单计算

    using System.Linq
    //other code
    //given that numbers is IEnumerable<double>
    double average = numbers.Average()
    double sum = numbers.Aggregate((tot, n) => tot+n);
    double sumOfSquares = numbers.Select(n => n*n).Aggregate((tot, n) => tot + n);