写入错误的txt文件c#

时间:2016-02-17 17:47:02

标签: c# io streamwriter

我正在尝试编写代码来编写两个文本文件。

我为此创建了两个子程序,因为它们用于不同的情况。但是,当我运行代码时,写入两个文本文件时,我需要写的所有信息都只写在一个文件中,而不是两个。

你们能帮助我弄清楚我做错了吗?

我认为我以错误的方式处理路径,但我无法确定正确使用

private void COBEQ2016_Click(object sender, EventArgs e)
{
    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    Global.Filename = String.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}__{1}", DateTime.Now, "cobeqswarm_ocresol_la_bin.txt");
    string path = Path.Combine(Directory.GetCurrentDirectory(), Global.Filename);
    File.Create(path).Close();


    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    Global.Filename2 = String.Format("{0:yyyy-MM-dd_hh-mm-ss-tt}__{1}", DateTime.Now, "cobeqswarm_JAC_ocresol_la_bin.txt");
    string path2 = Path.Combine(Directory.GetCurrentDirectory(), Global.Filename2);
    File.Create(path2).Close();


    //A lot of math//
double[] minX = new double[] { -3000, -400 }; 
textfile(minX, 100.0);
textfile2(minX);    


}
 public void textfile(double[] param1, double param2)
 {
     ///////////////////////////////////////////////////////////////////////////////////////////
     string[] tes2 = new string[9];
     string path = Path.Combine(Directory.GetCurrentDirectory(),Global.Filename);

     if (!File.Exists(path))
     {
         File.Create(path).Close();
         TextWriter tw = new StreamWriter(path,true);
         tw.WriteLine("");
         int i=0;
         while (i<param1.GetLength(0))
         {
             tw.Write(param1[i].ToString("0.000000000000000000"));
             tw.Write(" ");
             i++;
         }
         tw.Write(param2.ToString("0.000000000000000000"));
         tw.Write(" ");

         tw.Close();
     }
     else if (File.Exists(path))
     {
         TextWriter tw = new StreamWriter(path, true);
         tw.WriteLine("");
         int i = 0;
         while (i < param1.GetLength(0))
         {
             tw.Write(param1[i].ToString("0.000000000000000000"));
             tw.Write(" ");
             i++;
         }
         tw.Write(param2.ToString("0.000000000000000000"));
         tw.Write(" ");

         tw.Close();
     }
     ///////////////////////////////////////////////////////////////////////////
 }//textfile
 public void textfile2(double[] param0)
 {
     string[] tes2 = new string[9];
     string path2 = Path.Combine(Directory.GetCurrentDirectory(), Global.Filename2);

     if (!File.Exists(path2))
     {
         File.Create(path2).Close();
         TextWriter tw = new StreamWriter(path2, true);
         tw.WriteLine("");
         int i = 0;
         while (i < param0.GetLength(0))
         {
             tw.Write(param0[i].ToString("0.000000000000000000"));
             tw.Write(" ");
             i++;
         }
       //  tw.Write(param2.ToString("0.000000000000000000"));
         tw.Write(" ");

         tw.Close();
     }
     else if (File.Exists(path2))
     {
         TextWriter tw = new StreamWriter(path2, true);
         tw.WriteLine("");
         int i = 0;
         while (i < param0.GetLength(0))
         {
             tw.Write(param0[i].ToString("0.000000000000000000"));
             tw.Write(" ");
             i++;
         }

         tw.Write(" ");

         tw.Close();
     }
     ///////////////////////////////////////////////////////////////////////////
     ///////////////////////////////////////////////////////////////////////////
 }//textfile2

2 个答案:

答案 0 :(得分:0)

它对我来说很好,但是,例如,在这种情况下你可以看到一个空文件:

            double[] ap2 = new double[0];
            textfile2(ap2);

因为你的循环不起作用:

while (i < param0.GetLength(0))

尝试为您的方法创建单元测试或调试代码。

答案 1 :(得分:0)

我为Global创建了一个静态类并解决了我的问题

static class Global
{
   private static string _globalVar = "";

   public static string Filename
   {
       get { return _globalVar; }
       set { _globalVar = value; }
   }
   private static string _globalVar2 = "";
   public static string Filename2
   {
       get { return _globalVar2; }
       set { _globalVar2 = value; }
   }
}