C# 创建多个文本文件并写入其中
我想创建100个文件到目标文件夹,下面是源代码,但它在目标文件夹中创建文件。谢谢你的帮助C# 创建多个文本文件并写入其中,c#,C#,我想创建100个文件到目标文件夹,下面是源代码,但它在目标文件夹中创建文件。谢谢你的帮助 class Program { static void Main(string[] args) { int i=1; string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\"; if (!File.Exists(path))
class Program
{
static void Main(string[] args)
{
int i=1;
string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\";
if (!File.Exists(path))
{
for (i = 1; i < 100; i++)
{
string FileName = "MyTest" + i + ".txt";
path = FileName;
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
}
}
}
类程序
{
静态void Main(字符串[]参数)
{
int i=1;
字符串路径=@“E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\”;
如果(!File.Exists(path))
{
对于(i=1;i<100;i++)
{
字符串FileName=“MyTest”+i+“.txt”;
路径=文件名;
//创建要写入的文件。
使用(StreamWriter sw=File.CreateText(路径))
{
sw.WriteLine(“你好”);
西南WriteLine(“和”);
sw.WriteLine(“欢迎”);
}
}
}
}
}
我发现至少有三件事不对
如果(!File.Exists(path))
-路径
是目录
,而不是文件
path=Filename
-您希望将两个字符串连接到一个新变量,而不是覆盖路径
我认为至少有三件事是错的
如果(!File.Exists(path))
-路径
是目录
,而不是文件
path=Filename
-您希望将两个字符串连接到一个新变量,而不是覆盖路径
您正在重新设置路径
path = FileName;
您应该将文件名指定为路径并使用File.Exists
int i=1;
string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\";
if (Directory.Exists(path))
{
for (i = 1; i < 100; i++)
{
string FileName = "MyTest" + i + ".txt";
var newpath= path + FileName;
// Create a file to write to.
if(!File.Exists(newpath)){
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}}
}
}
inti=1;
字符串路径=@“E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\”;
if(目录存在(路径))
{
对于(i=1;i<100;i++)
{
字符串FileName=“MyTest”+i+“.txt”;
var newpath=路径+文件名;
//创建要写入的文件。
如果(!File.Exists(newpath)){
使用(StreamWriter sw=File.CreateText(路径))
{
sw.WriteLine(“你好”);
西南WriteLine(“和”);
sw.WriteLine(“欢迎”);
}}
}
}
您正在重新设置路径
path = FileName;
您应该将文件名指定为路径并使用File.Exists
int i=1;
string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\";
if (Directory.Exists(path))
{
for (i = 1; i < 100; i++)
{
string FileName = "MyTest" + i + ".txt";
var newpath= path + FileName;
// Create a file to write to.
if(!File.Exists(newpath)){
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}}
}
}
inti=1;
字符串路径=@“E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\”;
if(目录存在(路径))
{
对于(i=1;i<100;i++)
{
字符串FileName=“MyTest”+i+“.txt”;
var newpath=路径+文件名;
//创建要写入的文件。
如果(!File.Exists(newpath)){
使用(StreamWriter sw=File.CreateText(路径))
{
sw.WriteLine(“你好”);
西南WriteLine(“和”);
sw.WriteLine(“欢迎”);
}}
}
}
Rotem很好地理解了这一点,但我想补充一下代码应该是什么样子
string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\";
if (!File.Exists(path))
你们都在检查一个目录,如果它确实存在,你们想这样做。你想要
if (Directory.Exists(path)
然后将目录路径重新指定给文件名
string FileName = "MyTest" + i + ".txt";
path = FileName;
您要做的是连接(组合)两个字符串
string FilePath = path + @"MyTest" + i.ToString() + ".txt"
using (StreamWriter sw = File.CreateText(FilePath))
这样,您就不会在每次通过循环时都覆盖路径值。Rotem很好地做到了这一点,但我想补充一下代码应该是什么样子
string path = @"E:\Project\C_Sharp\Tutorial\Console_App\FileSystem\Output\";
if (!File.Exists(path))
你们都在检查一个目录,如果它确实存在,你们想这样做。你想要
if (Directory.Exists(path)
然后将目录路径重新指定给文件名
string FileName = "MyTest" + i + ".txt";
path = FileName;
您要做的是连接(组合)两个字符串
string FilePath = path + @"MyTest" + i.ToString() + ".txt"
using (StreamWriter sw = File.CreateText(FilePath))
这样,您就不会每次通过循环时都覆盖路径值。运行时会发生什么?定义“不工作”。你有错误吗?例外情况?还有别的吗?您是否对代码进行了调试,以查看它在何处未按预期工作?运行时会发生什么?定义“不工作”。你有错误吗?例外情况?还有别的吗?您是否调试了代码以查看它在何处未按预期工作?您在
文件.CreateText中仍有路径
,并且您可能希望如果(!File.Exists)(newpath)
您在文件.CreateText中仍有路径
,如果(!File.Exists)(newpath)您可能需要如果(!File.Exists)(newpath)
我也会养成使用路径的习惯。将组合成路径连接,而不是+
。这可以防止我每天至少犯一次愚蠢的错误。@Rotem Oh cool,我不知道。在工作中,我通常必须使用.NET 3.5,它看起来像路径。组合只有4个及以上版本,但我不知道我永远记住这一点。谢谢你的帮助:)@成本实际上是从v1开始的。0@Rotem真的吗?我只是假设它是4.0或更高版本,因为MSDN文章只列出了4和4.5。很高兴听到这样的想法,我也会养成使用路径的习惯。组合进行路径连接,而不是+
。这样可以防止我每天至少犯一次愚蠢的错误。@Rotem噢,太酷了,我不知道。在工作中,我通常必须在.NET 3.5中工作,它看起来像是Path。Combine
仅在4和更高版本中,但我肯定会记住这一点。感谢所有的帮助:)@cost实际上它来自v1。0@Rotem真正地我只是假设它是4.0或更高版本,因为MSDN文章只列出了4和4.5。很高兴听到这个消息