读取文件和显示内容

时间:2012-12-16 05:13:05

标签: c# file-io

我希望当我单击“列出所有客户”按钮时,代码应该读取Customer.csv文件并在名为“列出所有客户”的表单上显示信息。

我该怎么做?

public static void ReadFile()
{
    StreamReader sr = File.OpenText("Customer.csv");
}

public static void LoadCustomers()
{
    try
    {
        if (File.Exists("Customer.csv"))
        {
            string temp = null;
            int count = 0;

            using (StreamReader sr = File.OpenText(@"Customer.csv"))
            {
                while ((temp = sr.ReadLine()) != null)
                {
                    temp = temp.Trim();
                    string[] lineHolder = temp.Split(',');
                    Customer tempCust = new Customer();
                    tempCust.customerName = lineHolder[0];
                    tempCust.customerAddress = lineHolder[1];
                    tempCust.customerZip = Convert.ToInt32(lineHolder[2]);
                    myCustArray[count] = tempCust;
                    count++;
                }//end for loop
            }
        }
        else
        {
            File.Create("Customer.csv");
        }
    }
    catch (Exception e)
    {
        System.Windows.Forms.MessageBox.Show("File Loading Error: " + e.Message);
    }
}

2 个答案:

答案 0 :(得分:0)

我不确定您希望在哪种控件中显示此数据,但您的方法可能只返回Customer列表,然后您可以添加到ListBox,{{1} }或ListView

DataGrid

列表框

public static IEnumerable<Customer> LoadCustomers(string filename)
{
    if (File.Exists(filename))
    {
        foreach (var line in File.ReadAllLines(filename).Where(l => l.Contains(',')))
        {
            var splitLine = line.Split(',');
            if (splitLine.Count() >= 3)
            {
                yield return new Customer
                {
                    customerName = splitLine[0].Trim(),
                    customerAddress = splitLine[1].Trim(),
                    customerZip = Convert.ToInt32(splitLine[2].Trim())
                };
            }
        }
    }
}

答案 1 :(得分:0)

首先,利用列表对象:

public static void ReadFile()
{
    StreamReader sr = File.OpenText("Customer.csv");
}

public static void LoadCustomers()
{
    try
    {
        if (File.Exists("Customer.csv"))
        {
            string temp = null;
            var retList = new List<Customer>();
            using (StreamReader sr = File.OpenText(@"Customer.csv"))
            {
                while ((temp = sr.ReadLine()) != null)
                {
                    temp = temp.Trim();
                    string[] lineHolder = temp.Split(',');
                    retlist.add(new Customer(){
                      customerName = linerHolder[0],
                      customerAddress = lineHolder[1],
                      customerZip = Convert.ToInt32(lineHolder[2])
                    });
                }//end for loop
            }
        }
        else
        {
            File.Create("Customer.csv");
        }
    }
    catch (Exception e)
    {
        System.Windows.Forms.MessageBox.Show("File Loading Error: " + e.Message);
    }
}

将它包装在一个类中,从控制器调用if并填充结果。根据您更新此数据的频率,您可能会考虑对其进行缓存,因此您不必每隔X秒为每个用户运行此过程。