我必须在bin-debug中创建文件夹,然后在其中创建和写入文本文件

时间:2016-04-27 13:37:40

标签: c#

我写了这段代码,它创建了一个名为" Fitness50"的文件夹。每次都会创建文本文件。我想在此文件夹中创建文本文件,然后保存arraylist的值。 所以我试过这个

DirectoryInfo myDir = new DirectoryInfo(@"E:");
ParentFolderName1 = "Fittness50";
myDir.CreateSubdirectory(ParentFolderName1);
myDir = new DirectoryInfo(ParentFolderName1);
ParentFolderName1 = "Fittness50";
myDir.CreateSubdirectory(ParentFolderName1);



FileName1 = "./" + "" + ParentFolderName1 + "" + "/" + "Fittness10" + "" + "" + PopulationID + "" + ".txt";

FileStream fs2 = new FileStream(FileName1, FileMode.Create, FileAccess.Write);
StreamWriter SW2 = new StreamWriter(fs2);

for (i = 0; i < AlTargetData.Count; i++)
{
      SW2.WriteLine(AlTargetData[i]);

}

AlTargetData.Clear();

SW2.Close();
fs2.Close();

1 个答案:

答案 0 :(得分:4)

首先,/不是Windows上的首选目录分隔符,但\是。{1}}。仅仅因为/恰好有用,就没有理由使用它。其次,您根本没有创建Fittness10文件夹,但是您要创建Fittness50两次。第三,您不是将文件写入您创建的文件夹,而是写入当前工作目录.

您的代码(或至少我理解您希望实现的代码)可以显着缩短:

string path = @"E:\Fittness50\Fittness10";
if (!Directory.Exists(path))
    Directory.CreateDirectory(path);

string fileName = Path.Combine(path, String.Format("{0}.txt", PopulationID));
File.WriteAllText(fileName, String.Join(Environment.NewLine, AlTargetData));

请注意,您应考虑写信至bin\debug。最终用户的计算机上没有bin\debug。如果用户安装了您的应用程序,它很可能会安装在Program Files文件夹中,您的应用程序将无法写入该文件夹。相反,请考虑写入一个公共位置,例如您可以在Environment.GetFolderPath中选择的位置。