it-swarm.com.de

Laufwerk prüfen (String-Pfad)

Wie zu prüfen ist, ob das Laufwerk im System von der angegebenen Zeichenfolge in WPF vorhanden ist. Ich habe folgendes ausprobiert

Bsp: FileLocation.Text = "K:\TestDrive\XXX";

if (!Directory.Exists(FileLocation.Text))
{
         MessageBox.Show("Invalid Directory", "Error", MessageBoxButton.OK);
         return;
}

Es prüft den vollständigen Pfad, aber it should check "K:\" from the text. Könnten Sie mich bitte führen?

EDIT 1: " K:\TestDrive\XXX " ist nicht statisch

EDIT 2: Ich habe folgendes versucht, in meinem System habe ich 3 drives C, D and E, aber es zeigt false .

Environment.SystemDirectory.Contains("D").ToString(); = "False"
13
Ponmalar
string drive = Path.GetPathRoot(FileLocation.Text);   // e.g. K:\

if (!Directory.Exists(drive))
{
     MessageBox.Show("Drive " + drive + " not found or inaccessible", 
                     "Error", MessageBoxButton.OK);
     return;
}

Natürlich sollten zusätzliche Überprüfungen der Sicherheit (dh, die Pfadwurzel hat mindestens drei Zeichen, ist der zweite ein Doppelpunkt) hinzugefügt werden, aber dies wird dem Leser als Übung überlassen.

28
Heinzi

du kannst folgen

bool isDriveExists(string driveLetterWithColonAndSlash)
{
    return DriveInfo.GetDrives().Any(x => x.Name == driveLetterWithColonAndSlash);
}
3
DreamChild

du kannst es versuchen ....

MessageBox.Show(Environment.SystemDirectory.Contains("D").ToString());
2
Shujaat Abdi

Dies liegt daran, dass es bei Environment.SystemDirectory.XXXXX darum geht, wo das System/Windows installiert ist .... nicht für HD.

dazu können Sie verwenden .....

    foreach (var item in System.IO.DriveInfo.GetDrives())
    {
        MessageBox.Show(item.ToString());
    }

es werden alle Laufwerke angezeigt, einschließlich der angeschlossenen USBs .....

1
Shujaat Abdi

Sie können Environment.GetLogicalDrives() verwenden, um einen string[] von logischen Laufwerken in Ihrem System zu erhalten.

var drive = Path.GetPathRoot(FileLocation.Text);
if (Environment.GetLogicalDrives().Contains(drive, StringComparer.InvariantCultureIgnoreCase))
{
         MessageBox.Show("Invalid Directory", "Error", MessageBoxButton.OK);
         return;
}
0
Pedro

Sie können Laufwerke in C # auf diese Weise überprüfen

   foreach (var drive in DriveInfo.GetDrives())
   {
       //Code goes here
   }
0
Rajeev Kumar

Ich vermute, das hängt davon ab, was genau Sie erreichen wollen. Wenn Sie versuchen, die Laufwerke zu durchlaufen und zu prüfen, ob jedes Laufwerk vorhanden ist, ist Environment.GetLogicalDrives() oder DriveInfo.GetDrives() geeignet, da Sie die Laufwerke durchlaufen können.

Wenn Sie jedoch lediglich prüfen möchten, ob ein Laufwerk für einen bestimmten Pfad vorhanden ist, ist es ein bisschen rückwärts, die gesamte Liste der Laufwerke zu überprüfen, ob sie enthalten ist. Sie möchten Directory.Exists() verwenden, da nur geprüft wird, ob dieser einzelne Pfad vorhanden ist.

bool DriveExists(string fileLocation) {
    string drive = Path.GetPathRoot(fileLocation); // To ensure we are just testing the root directory.

    return Directory.Exists(drive); // Does the path exist?
}
0
Komron Nouri