Загрузка...

Error when copying file to directory

Thread in C# created by Minin_inactive4471240 Feb 24, 2022. 222 views

  1. Minin_inactive4471240
    Minin_inactive4471240 Topic starter Feb 24, 2022 3 Sep 5, 2021
    Вылазит ошибка при копировании в директорию: Отказано в доступе. Как фиксить?

    Code
    [
    public static void SecondSaveFile()
    {
    string Newpath = "C:\\Desktop";
    Console.WriteLine(Newpath);
    Console.WriteLine("Введите нынешний путь файла: ");
    path = Console.ReadLine();

    if (File.Exists(Newpath))
    {
    File.Delete(Newpath);
    File.Copy(path, Newpath);
    }
    }
    /CODE]
     
  2. vtlstolyarov
    1. View previous comments (7)
    2. vtlstolyarov
      Minin_inactive4471240, а чего ты ждал? По первому условию ты пойдёшь в else потому что такого файла не существует (существует такая папка), а в этой ветке ты попытаешься переместить файл задав ему в качестве НОВОГО ИМЕНИ путь к папке - естественно что эта команда падает потому что этот путь занят папкой.

      В документации чётко написано что вторым параметром надо передать новый путь к файлу И ЕГО ИМЯ (а не путь к папке в которую ты хочешь его переместить).
    3. vtlstolyarov
      Minin_inactive4471240, Чел, ты немного туговат - "C:\Users" тоже требует прав администратора для доступа. Вот пример который переместит указанный в консоли файл на твой рабочий стол (не забывай что путь который ты вводишь должен быть доступен без прав администратора, иначе программу надо запускать с правами администратора чтобы она отработала):
      C#
      public static void SecondSaveFile()
      {
      Console.WriteLine("Введите нынешний путь файла: ");
      string path = Console.ReadLine();

      string newPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), Path.GetFileName(path));
      Console.WriteLine($"Новый путь: {newPath}");
      try
      {
      if (File.Exists(newPath))
      {
      File.Delete(newPath);
      }

      File.Move(path, newPath);
      Console.WriteLine("Ready");
      }
      catch (Exception ex)
      {
      Console.WriteLine($"Error: {ex.Message}");
      }
      }
Top
Loading...