2013-11-13 2 views
0

Я делаю небольшое приложение, которое должно взять все файлы из общей папки и скопировать их в текущую папку (один раз с того места, где приложение было запущено). Один месяц назад этот код был штраф:Скопируйте и перезапишите файлы между двумя папками (один общий)

  string seprin_address = @"\\PC-SEPRIN\2port\"; 
      SimpleCopy(seprin_address); 

    public void SimpleCopy(string sourcePath){ 
    try{ 
     string fileName = ""; 
     string targetPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 
     bool path = false; 
     string real_target = ""; 
     for(int i = 0; i < targetPath.Length; i++){ 
      if(targetPath[i] == 'C'){ 
       path = true; 
      } 
      if(path){ 
       real_target += targetPath[i]; 
      } 
     } 
     // Use Path class to manipulate file and directory paths. 
     string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
     string destFile = System.IO.Path.Combine(targetPath, fileName); 


     // To copy a folder's contents to a new location: 
     // Create a new target folder, if necessary. 
     /*if (!System.IO.Directory.Exists(targetPath)) 
     { 
      System.IO.Directory.CreateDirectory(targetPath); 

     }*/ 

     // To copy a file to another location and 
     // overwrite the destination file if it already exists. 
     //System.IO.File.Copy(sourceFile, destFile, true); 

     // To copy all the files in one directory to another directory. 
     // Get the files in the source folder. (To recursively iterate through 
     // all subfolders under the current directory, see 
     // "How to: Iterate Through a Directory Tree.") 
     // Note: Check for target path was performed previously 
     //  in this code example. 
     if (System.IO.Directory.Exists(sourcePath)) 
     { 
      string[] files = System.IO.Directory.GetFiles(sourcePath); 

      // Copy the files and overwrite destination files if they already exist. 
      foreach (string s in files) 
      { 
       // Use static Path methods to extract only the file name from the path. 
       fileName = System.IO.Path.GetFileName(s); 
       destFile = System.IO.Path.Combine(targetPath, fileName); 

       System.IO.File.Copy(s, destFile, true); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Error"); 
     } 

     // Keep console window open in debug mode. 
     } 
     catch(Exception e_p){ 
      lbabel.Text = e_p.Message; 
     } 
    } 

Теперь я получаю «URI не поддерживается ошибка», когда File.Copy это называется. Я думаю, что это сверхъестественно, но если у вас есть какие-то другие идеи, я все уши.

ответ

0

Я бы узнал, не поддерживает ли URI жалобу на источник или пункт назначения. Я также хотел бы убедиться, что пользователь работает, так как имеет разрешение на каталоги, о которых идет речь. Могут ли изменения пользователей изменить? У меня был случай, когда у меня были задания в запланированных задачах, где был установлен пользователь, а затем пароль был изменен для пользователя, но не в запланированной задаче. То же самое может быть правдой, если это написано как услуга с конкретным пользователем.

0

Как вы говорите, он работал нормально месяц назад, могут быть две возможности, которые ограничивают вас доступом к Пути.

1.Remote PC HostnamePC-SEPRIN Возможно, это было изменено. Пожалуйста, проверьте удаленное имя компьютера pc.
2.check Общая папка 2port путь правильно.

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

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