我正在尝试编写代码来编写两个文本文件。
我为此创建了两个子程序,因为它们用于不同的情况。但是,当我运行代码时,写入两个文本文件时,我需要写的所有信息都只写在一个文件中,而不是两个。
你们能帮助我弄清楚我做错了吗?
我认为我以错误的方式处理路径,但我无法确定正确使用
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
答案 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; }
}
}