C# 我必须在bin调试中创建文件夹,然后在其中创建并写入文本文件

C# 我必须在bin调试中创建文件夹,然后在其中创建并写入文本文件,c#,C#,我写了这段代码,它每次都创建名为“Fitness50”的文件夹,但文本文件没有创建。我想在这个文件夹中创建文本文件,然后保存arraylist的值。 所以我已经试过了 DirectoryInfo myDir = new DirectoryInfo(@"E:"); ParentFolderName1 = "Fittness50"; myDir.CreateSubdirectory(ParentFolderName1); myDir = new DirectoryInfo(ParentFolderN

我写了这段代码,它每次都创建名为“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();
DirectoryInfo myDir=newdirectoryinfo(@“E:”);
ParentFolderName1=“Fitness50”;
myDir.CreateSubdirectory(ParentFolderName1);
myDir=新目录信息(ParentFolderName1);
ParentFolderName1=“Fitness50”;
myDir.CreateSubdirectory(ParentFolderName1);
FileName1=“./”+“”+ParentFolderName1++“/”+“fitness10”+“”+“”+PopulationID++.txt”;
FileStream fs2=新FileStream(FileName1,FileMode.Create,FileAccess.Write);
StreamWriter SW2=新StreamWriter(fs2);
对于(i=0;i
首先,
/
不是Windows上首选的目录分隔符,但
\
是。仅仅因为
/
碰巧起作用,就没有理由使用它。其次,您根本没有创建
fitness10
文件夹,而是创建了两次
fitness50
。第三,您没有将文件写入所创建的文件夹,而是写入当前工作目录

您的代码(或至少我理解您想要实现的代码)可以显著缩短为:

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 \调试\/COD>。最终用户的机器上不会有

bin\debug
。如果用户安装了您的应用程序,它很可能安装在
程序文件
文件夹中,您的应用程序将不允许写入该文件夹。取而代之的是,考虑编写一个公共位置,比如在环境中选择的那些选项。GetFolderPath < /COD> < /P> > P>嗯,首先,<代码> /< /代码>不是Windows上的首选目录分隔符,但是<代码> \>代码>。仅仅因为
/
碰巧起作用,就没有理由使用它。其次,您根本没有创建
fitness10
文件夹,而是创建了两次
fitness50
。第三,您没有将文件写入所创建的文件夹,而是写入当前工作目录

您的代码(或至少我理解您想要实现的代码)可以显著缩短为:

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 \调试\/COD>。最终用户的机器上不会有

bin\debug
。如果用户安装了您的应用程序,它很可能安装在
程序文件
文件夹中,您的应用程序将不允许写入该文件夹。取而代之的是,考虑编写一个通用的位置,比如在<代码>环境中可以选择的那些选项。GetFolderPath < /代码> .< /p>“文本文件未被创建”,是否有任何阻止文件创建的错误?请检查<代码> ALTAuthDATA。计数< /C> >以确保它不是0。如果您从未进入该循环以调用
SW2.WriteLine(AlTargetData[I])
那么我不认为会创建任何文件,但我不能100%确定在实例化
StreamWriter
时没有创建该文件。看起来您是在
E:
上创建文件夹,而不是在
bin/debug
中。使用
Path.Combine
“未创建文本文件”,而不是组合文件位置的字符串。是否有任何错误阻止创建文件?请检查
AlTargetData.Count
,以确保它不是0。如果您从未进入该循环以调用
SW2.WriteLine(AlTargetData[I])
那么我不认为会创建任何文件,但我不能100%确定在实例化
StreamWriter
时没有创建该文件。看起来您是在
E:
上创建文件夹,而不是在
bin/debug
中。不要为文件位置组合字符串,而是使用
路径。组合
。仅供参考,您可以在路径字符串中使用
/
,Windows会处理得很好。关于写入程序文件夹:这取决于。我经常使用程序文件夹中的简单ini配置文件,在没有任何安装程序的情况下制作小型工具。我一秒钟也不指望有人会把它解压缩到程序文件中。但是对于更大的东西,是的,使用用户文件夹。你可以,但是为什么你要呢?Windows将路径分隔符定义为“\”。它碰巧也处理“/”这一事实并不意味着你应该使用它。@nyrguds我没有说:-)如果你只是在某处解包一个工具,它可能(也可能不)被允许写入它的文件夹。但是如果你把它安装在
程序文件中
,它肯定不会被允许写入自己的文件夹。@DrewJordan要想最学究,你首先必须投票反对硬编码路径-应用程序可能在Linux上运行,Mono甚至不知道'E:`is:DFYI'是什么,你可以在路径字符串中使用
//code>,Windows会处理得很好。关于写入程序文件夹:这取决于。我经常使用程序文件夹中的简单ini配置文件,在没有任何安装程序的情况下制作小型工具。我一秒钟也不指望有人会把它解压缩到程序文件中。但是对于更大的东西,是的,使用用户文件夹。你可以,但是为什么你要呢?Windows将路径分隔符定义为“\”。它碰巧也处理“/”这一事实并不意味着你应该使用它。@nyrguds我没有说:-)如果你只是在某处解包一个工具,它可能(也可能不)被允许写入它的文件夹。但是如果你把它安装在
程序文件中
,它肯定不会被允许写入自己的文件夹。@DrewJordan要想最迂腐,你首先必须投票反对硬编码路径-该应用程序可能在Linux上运行,Mono甚至不知道'E:`is:d'