0

我的问题是保存和读取文件。

您能否建议将各种形式的数据(主要是数字)保存到数据文件(可以是 .txt、.dat 等)然后从文件中读取特定数据的最佳方法...

例如..

我写的:

数据 1 数据 2 数据 3

当方程中需要数据 3 时,它可以读取它并只选择数据 3...

我现在想的是每行保存数据,

例如:

数据 1
数据 2
数据 3

所以当我需要数据 3 时,我只需要从第 3 行中选择数据来选择数据 3。

怎么做?

我研究了一下,发现了这个

string[] Lines = File.ReadAllLines("filename.txt");
Lines[1] = "second line new value";
File.WriteAllLines("filename.txt");

据我所知,该命令将在 filename.txt 的第二行写入数据。如果是真的,怎么读?

有更好的方法吗?

我不介意您只是粘贴一个网址供我阅读或直接发布示例代码。

4

2 回答 2

0

尝试这个:

Ir 使用 System.IO.File 类中的静态方法 ReadAllText 和 ReadAllLines 读取文本文件的内容。

// Read the file as one string.
                string text = System.IO.File.ReadAllText(@"C:\WriteText.txt");

       // Display the file contents to the console. Variable text is string.
                System.Console.WriteLine("Contents of WriteText.txt = {0}", text);

    // Read each line of the file into a string array. 
    // Each element of the array is one line of the file.
             string[] lines = System.IO.File.ReadAllLines(@"C:\WriteLines2.txt");

                    // Display the file contents by using a foreach loop.
                    System.Console.WriteLine("Contents of WriteLines2.txt = ");
                    foreach (string line in lines)
                {
                    // Use a tab to indent each line of the file.
                    Console.WriteLine("\t" + line);
                }
                // Keep the console window open in debug mode.
                 Console.WriteLine("Press any key to exit.");
                 System.Console.ReadKey();
于 2017-08-02T01:32:13.277 回答
0

这是我对这类问题的解决方案,当我想将一些数据保存在 .txt 配置文件中,然后我想检索该信息。

这是 WriteToFile 方法,它还会检查您插入的数据是否已经在文件中:

 using System.IO;

 public void WriteToFile(string newData, string _txtfile)
    {
        List<string> ListToWrite = new List<string>();
        /// Reads every line from the file
        try
        {
            using (StreamReader rd = new StreamReader(_txtfile, true))
            {
                while (true)
                {
                    ListToWrite.Add(rd.ReadLine().Trim());
                }
            }
        }
        catch (Exception)
        {
        }

        try
        {
            /// Check if the string that you want to insert is already on the file
            var x = ListToWrite.Single(a => a.Contains(newData));

            /// If there's no exception, means that it found your string in the file, so lets delete it.
            ListToWrite.Remove(x);

        }
        catch (Exception)
        {
            /// If a exception is thrown, it did not find your string so add it.
            ListToWrite.add(newData);
        }

        /// Now is time to write the NEW file.
        if (ListToWrite.Count > 0)
          {
              using (StreamWriter tw = new StreamWriter(_txtfile, true))
              {
                  try
                  {
                      foreach (string s in l)
                      {
                          tw.WriteLine(s);
                      }
                  }
                  catch (Exception)
                  {
                      break;
                  }
              }
          }
    }

现在,如果您想通过使用字符串进行搜索来检索一些信息:

    using System.IO;

    public static string GetData(string _txtfile, string searchstring)
    {
        string res = "";
        using (StreamReader rd = new StreamReader(_txtfile, true))
        {
            while (true)
            {
                try
                {
                    string line = rd.ReadLine().Trim();
                    if (line.Contains(searchstring))
                    {
                        return line;
                    }

                }
                catch (Exception)
                {
                    break;
                }
            }
        }
        return res;
    }

您可以对此进行调整并使其变得更好,但这目前对我有用。

于 2017-08-02T03:27:47.187 回答