【问题标题】:How to Change the name of a Text File in a loop using visual c# and streamwriter如何使用 Visual c# 和 streamwriter 在循环中更改文本文件的名称
【发布时间】:2015-09-12 11:54:11
【问题描述】:

我正在尝试编写一个循环来读取列表,并根据获取数据的时间将该列表的一部分保存到不同的文本文件中。我想根据获取数据的时间来命名文本文件。

以下是相关代码:

private StreamWriter filename;
string[] hour = {"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23}

private void btn_hourfiles_click(object sender, EventArgs e)
{
    int sizeoflist = Data_List.Count(); //This is the list containing the data
    for (int i = 0; i<sizeoflist,i++)
    {
       string[] listsplit = Data_List[i].Split(":");
       for (int j = 0; j<24; j++)
       {
           if (listsplit[2] == hour[j])
           {
            string[] datesplit = txt_DATE.Text.Split('-');//splits input date
            filename = datesplit[0] + '_' + dateplit[1] + '_' + datesplit[2] + '_' + hour[j] + '.dat'
            filename = new StreamWriter(new FileStream(Data_List[i], FileMode.Append, FileAccess.Write));
            }
       }
    }
 }

问题:我无法更改 StreamWriter filename。我收到一条错误消息:Cannot implicitly convert type string to System.IO.StreamWriter

问题:如何更改变量文件名?

【问题讨论】:

  • 好吧,不 - 您正在尝试将 string 值分配给 filename。你期望做什么?目前尚不清楚为什么你有一个 StreamWriter 的私有变量......我建议称它为 filename 也不是一个好选择。您实际上在哪里写入数据?使用File.WriteAllText 或任何可能会让您的生活更轻松的方式来做这件事。
  • @Jonskeet 我正在尝试创建一个名称基于小时的文件,并将该特定小时的数据写入文件。 (但不同的时间应该在不同的文件中)例如应该有一个文件“2015_06_25_1200.dat”和“2015_06_25_1500.dat”。 File.WriteAllText 会这样做吗?
  • 好吧,File.WriteAllText 将您要求的文本写入您要求的文件中。就这么简单。同样,您似乎没有在您提供的代码中写入任何数据 - 我们不知道 txt_DATE 将包含什么,或者 listsplit 将包含什么,这无济于事......

标签: c# streamwriter


【解决方案1】:

您发布的代码未编译。下次尝试发布输入,以便更简单地帮助和回答您的问题。 无论如何,我试图根据您上面写的内容来帮助您,希望对您有所帮助

类程序 {

    static void Main(string[] args)
    {
        MyTest test = new MyTest();

        test.Foo();
    }
}

class MyTest
{
    private StreamWriter streamWriter;
    string[] hour = { "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" };

    public void Foo()
    {
        string txt_DATE = "25-02-2015";
        string[] Data_List = { "12:05:10", "02:15:00", "14:15:22" };

        int sizeoflist = 3; // Data_List.Count(); //This is the list containing the data
        for (int i = 0; i < sizeoflist; i++)
        {
            string[] listsplit = Data_List[i].Split(':');
            for (int j = 0; j < 24; j++)
            {
                if (listsplit[2] == hour[j])
                {
                    string[] datesplit = txt_DATE.Split('-');//splits input date
                    var filename = datesplit[0] + '_' + datesplit[1] + '_' + datesplit[2] + '_' + hour[j] + ".dat";
                    streamWriter = new StreamWriter(new FileStream("C:\\" + filename, FileMode.Append, FileAccess.Write));
                }
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    问题是 StreamWriter 是这样声明的:

    private StreamWriter filename;
    

    但随后分配了一个字符串:

    filename = datesplit[0] + '_' + dateplit[1] + '_' + datesplit[2] + '_' + hour[j] + '.dat'
    

    建议:对文件名和StreamWriter 使用单独的变量。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 2019-02-15
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2013-10-18
      相关资源
      最近更新 更多