Как добавить файл в папку, только если файл не существует с помощью С#

У меня есть файл шаблона в папке "c:\template_folder".

Во время выполнения я создам новую папку «c:\new_folder» и захочу скопировать файл шаблона в новую_папку, только если файл не существует.

описание: в первый раз я скопирую файл шаблона в новую_папку и переименую его с именем пользователя... так что после первого завершения цикла у меня будет 8 файлов excel с именем пользователя в качестве имени каждого файла.

для второго цикла, если мне нужно скопировать файл шаблона в новую_папку и переименовать его в имя пользователя, если файл с именем пользователя уже существует, то он не должен копировать файл в папку.

Я добавляю фрагмент кода для справки.

foreach (FileInfo fi in templateFile)
{
    string oldfilename = null;
    string newfilename = null;
    if (dir.Exists)
    {

          fi.CopyTo(Path.Combine(dir.ToString(), fi.Name));
          FileInfo fileName = new FileInfo(fi.Name);
          oldfilename = Path.Combine(dir.ToString(), fileName.ToString());
          newfilename = Path.Combine(dir.ToString(), tempUserName + " "   + "E" + tempUserID + " VIPv7.0.xls");


          //if( !dir.ToString().Contains(newfilename))
          foreach( FileInfo fileList in fileNames)
          {
            if (fileList.Exists == false)
              File.Move(oldfilename, newfilename);
          }
    } 
}

пожалуйста, помогите мне в работе с этим.

спасибо рамм


person user301016    schedule 30.06.2009    source источник
comment
Просто небольшое замечание (извините, что не ответил на вопрос) вы пишете: if (fileList.Exists == false). fileList.Exists является логическим значением, результат вашего оператора if также является логическим значением. Вы должны просто написать, если (!fileList.Exists).   -  person TimothyP    schedule 30.06.2009


Ответы (3)


Чтобы условно переместить файл, только если он еще не существует, вы должны сделать это следующим образом:

if (!File.Exists(newfilename)) 
{
    File.Move(oldfilename, newfilename);
}

Ваш фрагмент кода меня смущает, поэтому я надеюсь, что правильно ответил на ваш вопрос. Если я что-то упустил, пожалуйста, дайте мне знать.

person Joseph    schedule 30.06.2009

Ваш код мне не кажется правильным (он не компилируется), но вы можете проверить, существует ли файл, вызвав File.Exists(имя файла), поэтому:

      foreach( FileInfo fileList in fileNames)
      {
        if (!File.Exists(newfilname))
          File.Move(oldfilename, newfilename);
      }
person Philippe Leybaert    schedule 30.06.2009

Вы хотите использовать File.Exists(path) вместо закомментированной строки, чтобы проверить, существует ли файл

person HasaniH    schedule 30.06.2009