2016-05-18 15 views
0

Ich wollte finden Verzeichnisnamen von Pfad erhalten, aber es gibt die folgende Fehlermeldung:Unable Verzeichnisname

Der Verzeichnisname ist ungültig

sind die folgenden Beispielpfad:

strFilePathName = C: \ inetpub \ wwwroot \ PSSWeb \ Ordnername \ xxx.ini

der folgende Code, den ich verwende, um Directoryname basierend auf Präfix PSS zu erhalten, und es sollte PSSWeb zurückgeben. Ich kann keine Lösung dafür finden.

var directories = Directory.GetDirectories(strFilePathName, 
              "PSS?", 
              SearchOption.AllDirectories); 
+0

Was ist der Fehler? – Nasreddine

+0

@Nasreddine "Der Verzeichnisname ist ungültig" – theinarasu

+0

strFilePathName ist kein Verzeichnisname es ist Dateiname –

Antwort

3

der Pfadname Sie angegeben haben, "C: \ inetpub \ wwwroot \ PSSWeb \ Ordnername \ xxx.ini" ist kein Verzeichnis, sondern eine Datei.

// 
    // Summary: 
    //  Returns the names of the subdirectories (including their paths) that match the 
    //  specified search pattern in the specified directory, and optionally searches 
    //  subdirectories. 
    // 
    // Parameters: 
    // path: 
    //  The relative or absolute path to the directory to search. This string is not 
    //  case-sensitive. 
    // 
    // searchPattern: 
    //  The search string to match against the names of subdirectories in path. This 
    //  parameter can contain a combination of valid literal and wildcard characters 
    //  (see Remarks), but doesn't support regular expressions. 
    // 
    // searchOption: 
    //  One of the enumeration values that specifies whether the search operation should 
    //  include all subdirectories or only the current directory. 
    // 
    // Returns: 
    //  An array of the full names (including paths) of the subdirectories that match 
    //  the specified criteria, or an empty array if no directories are found. 
    // 
    // Exceptions: 
    // T:System.ArgumentException: 
    //  path is a zero-length string, contains only white space, or contains one or more 
    //  invalid characters. You can query for invalid characters by using the System.IO.Path.GetInvalidPathChars 
    //  method.-or- searchPattern does not contain a valid pattern. 
    // 
    // T:System.ArgumentNullException: 
    //  path or searchPattern is null. 
    // 
    // T:System.ArgumentOutOfRangeException: 
    //  searchOption is not a valid System.IO.SearchOption value. 
    // 
    // T:System.UnauthorizedAccessException: 
    //  The caller does not have the required permission. 
    // 
    // T:System.IO.PathTooLongException: 
    //  The specified path, file name, or both exceed the system-defined maximum length. 
    //  For example, on Windows-based platforms, paths must be less than 248 characters 
    //  and file names must be less than 260 characters. 
    // 
    // T:System.IO.IOException: 
    //  path is a file name. 
    // 
    // T:System.IO.DirectoryNotFoundException: 
    //  The specified path is invalid (for example, it is on an unmapped drive). 
    public static string[] GetDirectories(string path, string searchPattern, SearchOption searchOption); 

Das ist die Dokumentation der Methode. Es wird erwähnt, dass der erste Parameter ein Verzeichnis sein muss.

+0

Großartig, der Fehler ist weg, aber es kann nicht das Präfix im Verzeichnisnamen wie im Suchmuster finden, wissen Sie, was könnte das Problem sein? – theinarasu

+0

PSS * anstelle von PSS verwenden? Außerdem würde es Dateien in den Unterverzeichnissen und im übergeordneten Verzeichnis finden. –

0

Endlich habe ich das Ergebnis, wie ich bei der Verwendung von ganz anderer Methode von oben, die wie folgend wollte:

string strFilePathName = "C:\inetpub\wwwroot\PSSWeb\foldername\xxx.in"; 
string x = Path.GetDirectoryName(strFilePathName); 
DirectoryInfo dir = new DirectoryInfo(@x); 
DirectoryInfo OneLevelsUp = dir.Parent; 

das Ergebnis bekam ich PSSWeb Ordnernamen aus dem Pfad C:\inetpub\wwwroot\PSSWeb\foldername\xxx.ini.

zwei Ebenen Um Ordnernamen

wenn jemand zwei Ebenen erhalten möchten bis Sie folgende Zeile versuchen können, zu

DirectoryInfo OneLevelsUp = dir.Parent 
DirectoryInfo TwoLevelsUp = dir.Parent.Parent 

es wird wwwroot Ordner ändern nur Namen zurückkehren nach der Pfad oben erwähnt