2016-07-31 8 views
0

Ich versuche, ein Bild von einem Ort zu einem anderen Ort mit File.Copy() -Funktion zu kopieren, aber es gibt den Prozess kann keine Ausnahme zugreifen man kann mir bitte weiterhelfen das ist der code block.Ich habe screenshot für exception beigefügt.Der Prozess kann nicht auf die Datei zugreifen, weil sie von einem anderen Prozess verwendet wird.C#

private void btnUpload_Click(object sender, EventArgs e) 
{ 
    string SourcePath; 
    string RootDrive; 
    string DestPath; 
    string fileName; 
    fileName = ""; 
     try 
     { 
      OpenFileDialog ofd = new OpenFileDialog(); 
      ofd.Title = "Select Image to Upload"; 
      ofd.Filter = "Jpg|*.jpg|Jpge|*.jpge|Gif|*.gif"; 
      ofd.FileName = null; 
      if (ofd.ShowDialog() != DialogResult.Cancel) 
      { 
       fileName = ofd.FileName; 

      } 
      ofd.Dispose(); 
      DestPath = Directory.GetCurrentDirectory() + @"\Uploads\PropertyImages\"; 
       string destFile = System.IO.Path.Combine(DestPath, fileName); 

       if (!System.IO.Directory.Exists(DestPath)) 
       { 
        System.IO.Directory.CreateDirectory(DestPath); 
       } 
       System.IO.File.Copy(fileName, destFile, true);         

     } 
     catch (Exception ae) 
     { 
      MessageBox.Show(ae.Message, "Upload Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

enter image description here

+0

ein anderes Programm wird unter Verwendung der Datei. So einfach ist das. Haben Sie die Datei in einer anderen Kopie des Programms geöffnet? Ein anderes Programm? – siride

+0

Wenn Sie die Datei an den gleichen Ort hochladen, an dem sie gerade liegt, erhalten Sie diesen Fehler. Stellen Sie sicher, dass der Quellpfad und der Zielpfad unterschiedlich sind. – siride

+0

@siride Nein die Datei wird nicht von einem anderen Programm verwendet und ja beide Pfade sind unterschiedlich – Shashikant

Antwort

1

Es ist wahrscheinlich, weil Sie die Datei auf sich selbst zu kopieren versuchen. Der Anruf an Combine(), wie Sie es haben, ist gerade zurück fileName. Ändern Sie die folgende Zeile:

string destFile = System.IO.Path.Combine(DestPath, fileName); 

zu

string destFile = System.IO.Path.Combine(DestPath, System.IO.Path.GetFileName(fileName)); 
+0

Vielen Dank das hat funktioniert :) – Shashikant

+0

@Shashikant - Wenn diese Antwort Ihre Probleme gelöst haben, stellen Sie sicher, dass Sie als Akzeptiert markieren (klicken Sie auf das grüne Häkchen), so dass andere Ich weiß, das war die richtige Lösung, wenn sie später kommen. :) – Tommy

+0

@seairth getan, können Sie bitte erklären, was diese Funktion GetFileName() tatsächlich tun. – Shashikant