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

本文关键字:文件 文本 创建 | 更新日期: 2023-09-27 18:22:29

我想创建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");
                }
            }
        }

    }
}

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

我发现至少有3处错误。

  1. if (!File.Exists(path))-pathDirectory,而不是File

  2. 如果目录确实存在,则需要进入循环,而不是不存在。否则毫无意义。

  3. path = Filename;-您希望将两个字符串连接到一个新变量,而不是覆盖path

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

这样就不会在每次循环时覆盖路径值。

您正在重新设置路径

path = FileName;

您应该将FileName连接到Path并使用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");
                }}
            }
        }