Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用StreamReader C#搜索文件中的特定数据,然后将其写入控制台窗口_C#_Search_Streamreader - Fatal编程技术网

使用StreamReader C#搜索文件中的特定数据,然后将其写入控制台窗口

使用StreamReader C#搜索文件中的特定数据,然后将其写入控制台窗口,c#,search,streamreader,C#,Search,Streamreader,我来找你,因为我已经用尽了自己的搜索谷歌和尝试我自己的方法 我有一个由存储在文本文件中的所有字符串组成的结构。我希望用户能够在文本文件中按客户编号搜索客户帐户,然后程序应返回客户信息 下面是我为程序创建的非工作搜索方法。我进入此方法的阶段,因为它允许我输入要搜索的客户号码,但按enter键后,我没有得到任何回报: 如果你能告诉我这段代码有什么问题,我将非常感激和宽慰 //SEARCHING BY CUSTOMER NUMBER static void FindCustN

我来找你,因为我已经用尽了自己的搜索谷歌和尝试我自己的方法

我有一个由存储在文本文件中的所有字符串组成的结构。我希望用户能够在文本文件中按客户编号搜索客户帐户,然后程序应返回客户信息

下面是我为程序创建的非工作搜索方法。我进入此方法的阶段,因为它允许我输入要搜索的客户号码,但按enter键后,我没有得到任何回报:

如果你能告诉我这段代码有什么问题,我将非常感激和宽慰

        //SEARCHING BY CUSTOMER NUMBER

    static void FindCustNo(CustomerStruct[] CustomerDeats)
    {
        String NumberSearch;
        bool CustomerNumberMatch = false;
        Console.Clear();

    begin:
        try
        {
            Console.WriteLine("\t\tPlease enter a customer number: ");
            NumberSearch = Console.ReadLine(); 
        }
        catch
        {
            Console.WriteLine("Failed. Please try again.");
            goto begin;
        }


        while (!CustomerNumberMatch)
        {
            var pathToCust = @"..\..\..\Files\Customer.txt";

            using (StreamReader sr = new StreamReader(pathToCust))
            {
                RecCount = 0;

                CustomerDeats[RecCount].CustomerNo = sr.ReadLine();                                   


                if (CustomerDeats[RecCount].CustomerNo == NumberSearch)
                    {
                        CustomerNumberMatch = true;

                        CustomerDeats[RecCount].CustomerNo = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].CustomerNo);

                        CustomerDeats[RecCount].Surname = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].Surname);

                        CustomerDeats[RecCount].Forename = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].Forename);

                        CustomerDeats[RecCount].Street = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].Town);

                        CustomerDeats[RecCount].Town = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].Town);

                        CustomerDeats[RecCount].DOB = sr.ReadLine();
                        Console.WriteLine(CustomerDeats[RecCount].DOB);  
                    }

                   RecCount++;   

                if (RecCount > 15)
                {
                    Console.WriteLine("No One Found");
                }
            }
        }

        Console.ReadKey();           
    }  
似乎与其他人刚才遇到的问题相同:

为什么每次迭代都要创建一个新的
StreamReader

试试这个:

    var pathToCust = @"..\..\..\Files\Customer.txt";

    using (StreamReader sr = new StreamReader(pathToCust) {

        while (!CustomerNumberMatch)
        { 
            ...
似乎与其他人刚才遇到的问题相同:

为什么每次迭代都要创建一个新的
StreamReader

试试这个:

    var pathToCust = @"..\..\..\Files\Customer.txt";

    using (StreamReader sr = new StreamReader(pathToCust) {

        while (!CustomerNumberMatch)
        { 
            ...
似乎与其他人刚才遇到的问题相同:

为什么每次迭代都要创建一个新的
StreamReader

试试这个:

    var pathToCust = @"..\..\..\Files\Customer.txt";

    using (StreamReader sr = new StreamReader(pathToCust) {

        while (!CustomerNumberMatch)
        { 
            ...
似乎与其他人刚才遇到的问题相同:

为什么每次迭代都要创建一个新的
StreamReader

试试这个:

    var pathToCust = @"..\..\..\Files\Customer.txt";

    using (StreamReader sr = new StreamReader(pathToCust) {

        while (!CustomerNumberMatch)
        { 
            ...

请尝试在数组中而不是文件中查找。以下代码行将从文件返回字符串数组

 string[] records = System.IO.File.ReadAllLines("filePath");
 foreach (var record in records)
   {
      string[] fields = record.Split(' ');//space
      if (customerIdToFind == fields[0])
        {
          Console.WriteLine("Customer ID:" + fields[0]);
          Console.WriteLine("Customer Name:" + fields[1]);
        }
    }

不要对大文件执行此操作,它会将整个内容加载到内存中。所以StreamReader总是很好的

请尝试在数组中而不是在文件中查找。以下代码行将从文件返回字符串数组

 string[] records = System.IO.File.ReadAllLines("filePath");
 foreach (var record in records)
   {
      string[] fields = record.Split(' ');//space
      if (customerIdToFind == fields[0])
        {
          Console.WriteLine("Customer ID:" + fields[0]);
          Console.WriteLine("Customer Name:" + fields[1]);
        }
    }

不要对大文件执行此操作,它会将整个内容加载到内存中。所以StreamReader总是很好的

请尝试在数组中而不是在文件中查找。以下代码行将从文件返回字符串数组

 string[] records = System.IO.File.ReadAllLines("filePath");
 foreach (var record in records)
   {
      string[] fields = record.Split(' ');//space
      if (customerIdToFind == fields[0])
        {
          Console.WriteLine("Customer ID:" + fields[0]);
          Console.WriteLine("Customer Name:" + fields[1]);
        }
    }

不要对大文件执行此操作,它会将整个内容加载到内存中。所以StreamReader总是很好的

请尝试在数组中而不是在文件中查找。以下代码行将从文件返回字符串数组

 string[] records = System.IO.File.ReadAllLines("filePath");
 foreach (var record in records)
   {
      string[] fields = record.Split(' ');//space
      if (customerIdToFind == fields[0])
        {
          Console.WriteLine("Customer ID:" + fields[0]);
          Console.WriteLine("Customer Name:" + fields[1]);
        }
    }
不要对大文件执行此操作,它会将整个内容加载到内存中。所以StreamReader总是很好的

试试这个

[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }
试试这个

[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }
试试这个

[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }
试试这个

[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }


您是否尝试过调试并观察了发生的情况?出了什么问题等?看看你的结构,找到一个有客户编号的文件。在控制台中键入该编号并调试。当它在应该匹配它的行上迭代时会发生什么?@aeliusd不幸的是,我对编程比较陌生,当我进行“主”调试时,没有错误。这就是我调试技能的高度。对断点不太熟悉,尤其是在理解断点返回的结果时。为什么不能发布数据文件示例?如果不查看文件,很难从不工作的代码中找到答案。当我插入断点时,它神奇地工作了,我现在更困惑了。您是否尝试过调试并观察了发生的情况?出了什么问题等?看看你的结构,找到一个有客户编号的文件。在控制台中键入该编号并调试。当它在应该匹配它的行上迭代时会发生什么?@aeliusd不幸的是,我对编程比较陌生,当我进行“主”调试时,没有错误。这就是我调试技能的高度。对断点不太熟悉,尤其是在理解断点返回的结果时。为什么不能发布数据文件示例?如果不查看文件,很难从不工作的代码中找到答案。当我插入断点时,它神奇地工作了,我现在更困惑了。您是否尝试过调试并观察了发生的情况?出了什么问题等?看看你的结构,找到一个有客户编号的文件。在控制台中键入该编号并调试。当它在应该匹配它的行上迭代时会发生什么?@aeliusd不幸的是,我对编程比较陌生,当我进行“主”调试时,没有错误。这就是我调试技能的高度。对断点不太熟悉,尤其是在理解断点返回的结果时。为什么不能发布数据文件示例?如果不查看文件,很难从不工作的代码中找到答案。当我插入断点时,它神奇地工作了,我现在更困惑了。您是否尝试过调试并观察了发生的情况?出了什么问题等?看看你的结构,找到一个有客户编号的文件。在控制台中键入该编号并调试。当它在应该匹配它的行上迭代时会发生什么?@aeliusd不幸的是,我对编程比较陌生,当我进行“主”调试时,没有错误。这就是我调试技能的高度。对断点不太熟悉,尤其是在理解断点返回的结果时。为什么不能发布数据文件示例?如果不查看文件,很难从不工作的代码中找到答案。当我插入断点时,它神奇地工作了,我现在更困惑了(好:)--它不起作用的原因是每次从
StreamReader
读取一行后,就会创建一个新的
StreamReader
,它会从头开始读取文件。因此,您总是反复地只读取文件的第一行。好:)--它不起作用的原因是每次从
StreamReader
中读取一行后,都会创建一个新的
StreamReader
,它将从头开始读取文件。因此,您总是反复地只读取文件的第一行。好:)--它不起作用的原因是每次从
StreamReader
读取一行后,都会创建一个新的
StreamReader
来读取文件