2017-09-26 2 views
-3

Ich habe die Stackoverflow-Fragen überprüft, die für meine Situation relevant sind. Sie beantworten keine Basisfrage. Meine Anwendung ermöglicht dem Benutzer, einen vollständig qualifizierten Pfad einzugeben. Dieser Pfad muss zu einer Datei gehören. Die Datei kann noch nicht existieren (sie speichern eine Sicherung). Wenn Sie den Ansatz "getattributes" verwenden, wird der Fang von try/catch ausgelöst, da die Datei nicht gefunden wird. (wie es nicht sein sollte). Ich muss fangen, wenn der Benutzer gerade einen Pfad zu einem Verzeichnis eingibt, und wenn der Pfad zu einer Datei ist, dass die Datei nicht existiert. Ich muss dem Benutzer eine direkte Rückmeldung geben, wenn einer der beiden Fälle eintritt. Ich benutze C# mit .NET Framework von 4.5.2.Ermitteln, ob der Pfad eine Datei oder nur ein Verzeichnis ist - wenn die Datei noch nicht existiert

Danke für alle Hinweise.

+0

"trip der Fang der Versuch/fangen" - was bedeutet das? Ist das ein neues Feature? Alles, was Sie tun müssen, ist zuerst zu bestätigen, dass der vollständige Pfad nicht existiert, dann entfernen Sie das letzte Pfadsegment und bestätigen, dass es ein existierendes Verzeichnis ist. Können Sie herausfinden, ob eine Datei existiert? Können Sie herausfinden, ob ein Verzeichnis existiert? Können Sie ein Pfadsegment aus einer Zeichenfolge entfernen? Diese sind alle trivial. –

+2

Hier ist ein Link, um zu bestimmen, ob die angegebene Eingabe ein Verzeichnis, eine Datei oder nicht existierend ist: https://msdn.microsoft.com/en-us/library/system.io.directory.exists (v = vs. 110) .aspx –

+6

Haben die 'File.Exists' und' Directory.Exists' Methoden Ihnen nicht geholfen? – dcg

Antwort

0

Können Sie dies versuchen und sehen, ob das ist, was Sie suchen. Ich nehme an, dass der Benutzer die Erweiterung der Datei eingeben wird, wie Sie erwähnten, wird der Benutzer den vollständig qualifizierten Pfad eingeben.

static void Main(string[] args) 
    { 
     Console.WriteLine("Enter fully qualified path of the file to be accessed."); 
     var eneteredPath = Console.ReadLine(); 
     var isItFile = Path.HasExtension(eneteredPath); 
     if (isItFile) 
     { 
      Console.WriteLine($"Specified File exists = {File.Exists(eneteredPath)}"); 
     } 
     else if(Directory.Exists(eneteredPath)) 
     { 
      Console.WriteLine($"Specified path is to a directory."); 
     } 
    } 
0

So habe ich ein einfaches Formular mit einem TxtInput und eine Schaltfläche:

using System.IO; 

private void cmdCheck_Click(object sender, EventArgs e) 
    { 
     if (Directory.Exists(txtInput.Text)) 
     { 
      // This is a directory, not a file. 
     } 
     else 
     { 
      try 
      { 
       if (File.Exists(txtInput.Text)) 
       { 
        var fileInfo = new FileInfo(txtInput.Text); 

        // File exists and now we have the information. Alert the user. 
       } 
       else 
       { 
        // File doesn't exist. Do things. 
       } 
      } 
      catch (Exception ex) 
      { 
       Trace.WriteLine(ex.Message, "ERROR"); 
      } 
     } 
    } 

Entspricht das Ihren Vorstellungen?

+0

blaze_125 brachte einen guten Punkt über Dateien, die keine Erweiterung erfordern, so änderte ich meine Antwort. – Ratatoskr

2

Es ist nicht zwingend erforderlich, dass eine Datei eine Dateierweiterung hat, damit sie eine gültige Datei ist. Daher können Sie sich nicht auf den Pfad mit einer Dateierweiterung verlassen, um ihn als Datei zu bezeichnen.

using System; 

namespace FileFolder_46434099 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string incomingpath = @"C:\temp\3075"; 
      if (System.IO.Directory.Exists(incomingpath)) 
      { 
       Console.WriteLine("path is a directory"); 
      } 
      else if (System.IO.File.Exists(incomingpath)) 
      { 
       Console.WriteLine("path is of a file"); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

In diesem Fall ... C:\temp\3075 ist eigentlich eine Datei und das Programm gibt es als solche.

0

Dieser Wille hilft Ihnen https://www.dotnetperls.com/path

Pfad. Dieser Weg führt irgendwo hin. Es geht zwischen Bäumen und Gebäuden. Eine Wolke bewegt sich. Sonnenlicht erreicht den Boden und unsere Richtung ist klar. Mit Path, einer Klasse im .NET Framework, verfügen wir über integrierte Methoden. Diese Klasse hilft beim Umgang mit Dateipfaden. Es ist Teil von System.IO.

Verwandte Themen