2013-07-16 7 views
1

Я хочу создать 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"); 
       } 

      } 
     } 



    } 
} 
+1

Что происходит, когда вы запускаете его? –

+2

Определить, что «не работает». Вы получаете ошибки? Исключения? Что-то другое? Вы отлаживали свой код, чтобы увидеть, где он работает не так, как ожидалось? – Oded

ответ

1

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

Таким образом, вы не переписывайте свое значение пути каждый раз, когда вы проходите цикл.

+1

Я бы тоже привык используя 'Path.Combine' для конкатенаций путей вместо' + '. Это мешает мне делать глупые ошибки не реже одного раза в день. – Rotem

+0

@Rotem О, круто, я об этом не знал. На работе мне обычно приходится работать .NET 3.5, и похоже, что «Path.Combine» находится только в 4 и выше, но я обязательно запомню это. – cost

+0

Спасибо за помощь :) – user1902849

3

Я вижу как минимум 3 вещи не так.

  1. if (!File.Exists(path)) - path является Directory, не File.

  2. Вы хотите ввести цикл, если существует каталог , а не если он не существует. В этом нет никакого смысла.

  3. path = Filename; - вы хотите объединить две строки в новую переменную, а не перезаписывать path.

0

Вы повторно установив путь

path = FileName; 

Вы Шоуда Concat в 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"); 
       }} 

      } 
     } 
+1

У вас все еще есть 'путь' в' File.CreateText', и вы, вероятно, хотите 'if (! File.Exists (newpath)' – Rotem

+0

@Rotem: Спасибо, пропустите это. Теперь обновлено !! –

Смежные вопросы