Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建多个文本文件并写入其中_C# - Fatal编程技术网

C# 创建多个文本文件并写入其中

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))

我想创建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))
        {
            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。很高兴听到这个消息