2016-03-31 29 views
0

olduğunu doğrulamak nasıl C# içinde bir konsol uygulaması var ve bir xml dosyası yüklemek istiyorum, dosyanın yolu console.readline yoluyla sağlanır (). Ancak, dosyayı sağlanan yoldan yüklemek istiyorum ancak kullanıcı sadece dosyanın adını veriyorsa, uygulamanın çalıştığı yerden yerel klasörde aramak istiyorum. Bir girdi veya dosya dolu yol olarak yalnızca bir dosya adı aldığımda nasıl anlarım. Bunu şu şekilde kullandım: var isFileNameOnly = ((xmlFilePath.IndexOf("\\")) == -1);konsoldan okunan bir girdinin dosya adı veya dosya tam yolu

Fakat bu çirkin ve muhtemelen çok yorucu.

Tam kodu:

 var xmlFilePath = Console.ReadLine(); 
     var xmlFile = new XmlDocument(); 

     var isFileNameOnly = ((xmlFilePath.IndexOf("\\")) == -1); 
     try 
     { 
      if (isFileNameOnly) 
      { 
       xmlFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, xmlFilePath); 
      } 

      xmlFile.Load(xmlFilePath); 

     } 

Thx

cevap

1

kullanıcı tarafından girilen dosya adı aslında Var() yöntemini kullanarak mevcut olmadığını kontrol edebilirsiniz. Gerçek döndürürse dosyayı yükleyin. verdiyse

File.Exists(xmlFilePath) 

Ayrıca XmlDocument.Load() yalnızca adı BaseDirectory kendisi dosyayı bulmaya çalışacağız dosya. Yani eğer file.Exists() true olursa, XmlDocument.Load'un yerel veya mutlak yol olup olmadığını yükleyeceğini varsayabilirsiniz.

+0

evet, ama: Belki de böyle yapsa biraz daha şık olurdu Dosya BaseDirectory değil, C: \ user \ myuser \ içinde bir dosya olup olmadığını bilmeliyim, böylece dosyaya BaseDirectory Yolunu ekleyebilirim. Temel dizini ekleyeceğim ve sonra í'nin mevcut olup olmadığını doğrulayacağım. thx – TBogdan

0

Bu yanlış döndürür:

bool isFolder = Path.IsPathRooted(@"Text.txt"); 

Bu doğru döndürür:

bool isFolder = Path.IsPathRooted(@"C:\Text"); 
+0

Kullanıcı bir göreli yol belirtirse bu işe yaramaz. –

0

Kişisel yaklaşım ı seçmiş olacağını aynıdır. Eğer param herhangi bir dizin sınırlayıcı char içermiyorsa, o zaman sadece bir dosya adı olmalıdır. Ben komut satırında (cmd), XmlDocument.Load (uygulamayı çalıştırmak çalışırsanız bulmaya çalışacağız),

bool isFileNameOnly = !xmlFilePath.Contains(Path.DirectorySeparatorChar.ToString());