2017-01-29 14 views
2

Ich versuche, alle JPG-Dateien in bestimmten Verzeichnissen zu finden. Aber ich erhalte diese StörungSystem.IO.DirectoryNotFoundException, Konnte keinen Teil des Pfades finden

Zusätzliche Informationen: Es konnte kein Teil des Weges finden 'C: \ Users myPC \ Proj \ Unschärfen \ bin \ Debug \ aaaa \'.

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) 
    { 
     ApplyFilter(false); 
     string filepath = Environment.CurrentDirectory + "\\aaaa\\"; 
     ImageFormat imgFormat = ImageFormat.Jpeg; 
     foreach (var imageFile in Directory.GetFiles(filepath, "*.jpg")) 
     { 
      string fullPath = filepath + imageFile; 
      try 
      { 
       ExtBitmap.BlurType blurType = 
       ((ExtBitmap.BlurType)cmbBlurFilter.SelectedItem); 

       resultBitmap.ImageBlurFilter(blurType); 
       resultBitmap.Save(fullPath, imgFormat); 
       resultBitmap = null; 
      } 
      catch 
      { 
      } 
     } 
    } 

Pfad ist vorhanden, und enthält auch jpg-Dateien Sie

+0

Können Sie Schritt durch den Code und lassen Sie mich wissen, wenn der Fehler auf Directory.GetFiles oder auf resultBitmap.Save ist? Ich verwende einen ähnlichen Code und bekomme keine Fehler. –

+0

Ich bin sicher, der Fehler ist auf Directory.GetFiles, ich habe diesen Code und ich habe die gleiche Fehlermeldung: string filepath = "D: \\ aaaa"; string [] dirs = Directory.GetFiles (Dateipfad, "* .jpg"); foreach (Zeichenfolge imageFile in Verzeichnissen) { aufrufen (neue Aktion (Delegate() {richTextBox1.AppendText (imageFile + Environment.NewLine);})); – userrrrrrr

+0

Muss dies mit Zugriffsrechten zu tun haben? Könnten Sie das in einem anderen Ordner als dem bin/debug/versuchen und jedem Lesezugriff gewähren? – Developer

Antwort

1

Bitte beachten Sie die Directory.GetFiles Dokumentation danken:

Rückgabewert Typ: System.String []

Ein Array der vollständigen Namen (einschließlich der Pfade) für die Dateien im angegebenen Verzeichnis, das dem angegebenen Suchmuster entspricht, oder ein leeres Array, wenn keine Dateien gefunden werden.

Also, wenn Sie string fullPath = filepath + imageFile; tun, verketten Sie zwei vollständige Pfade zusammen.

Ich bin nicht 100% sicher, was Sie mit der Linie string fullPath = filepath + imageFile; tun?

+0

Vielen Dank für die Antwort, aber die Fehlermeldung angezeigt vor "Zeichenfolge Fullpath" -Zeile, – userrrrrrr

+0

Sie müssen eine Überprüfung, ob (Directory.Exists (Dateipfad)) vor dem Ausführen der Methode hinzufügen. Das Ergebnis ist, dass Sie nur dieses Verzeichnis erreichen können oder es aus irgendeinem Grund nicht existiert. Vielleicht wurde es noch nicht erstellt, da es im Debug-Ordner ist? Ich bin mir nicht sicher, aber Jesse Good hat auch Recht ... Im obigen Codebeispiel kombinieren Sie, selbst wenn Sie es in die foreach-Schleife schaffen, 2 vollständige Pfade. imageFile ist der vollständige Pfad und Dateiname und alles, was Sie benötigen. –

0

Try this:

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) 
{ 
    ApplyFilter(false); 
    string filepath = Environment.CurrentDirectory + "\\aaaa\\"; 
    ImageFormat imgFormat = ImageFormat.Jpeg; 
    foreach (var imageFile in Directory.GetFiles(filepath, "*.jpg")) 
    { 
     string imageName = Path.GetFileName(imageFile);//Add this 
     string fullPath = filepath + imageName;//Update here 
     try 
     { 
      ExtBitmap.BlurType blurType = 
      ((ExtBitmap.BlurType)cmbBlurFilter.SelectedItem); 

      resultBitmap.ImageBlurFilter(blurType); 
      resultBitmap.Save(fullPath, imgFormat); 
      resultBitmap = null; 
     } 
     catch 
     { 
     } 
    } 
} 
Verwandte Themen