我写了这段代码,它创建了一个名为" 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();
答案 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
中选择的位置。