SORU
17 ŞUBAT 2010, ÇARŞAMBA


Nasıl (dizin) C yollar karşılaştırabilirsiniz I#?

DirectoryInfo iki nesne varsa, ne anlam eşitliği karşılaştırabilir miyim? Örneğin, aşağıdaki yolları C:\temp eşit kabul edilmelidir

  • C:\temp
  • C:\temp\
  • C:\temp\.
  • C:\temp\x\..\..\temp\.

Aşağıdaki edebilir veya C:\temp eşit olmayabilir:

  • Eğer geçerli çalışma dizini sürücüsünde \temp C:\
  • Geçerli çalışma dizini temp C:\
  • C:\temp.
  • C:\temp...\

Eğer önemli geçerli çalışma dizini düşünün, kendimi dışarı, böylece bu önemli değil bu rakam verebilirim. Sondaki nokta windows kaldırılır, bu yollar gerçekten eşit olmalı - ama mono altında diğer sonuçlar beklerdim yani unıx şeritli, değil mi.

Büyük / küçük harf duyarlılığı isteğe bağlıdır. Yollar olmayabilir veya kullanıcı olabilir veya olmayabilir izinleri yolunu tercih ederdim hızlı sağlam yöntem bu değil gerektiren herhangi bir I/O (hayır izin kontrol), ama eğer bir şey var-dahili mutlu olurum hiçbir şey "yeterince iyi" de...

CEVAP
17 ŞUBAT 2010, ÇARŞAMBA


GetFullPath iş, durum fark (Path.GetFullPath("test") != Path.GetFullPath("TEST")) ve eğik çizgi dışında gibi görünüyor. Bu yüzden, aşağıdaki kodu iyi çalışması gerekir:

String.Compare(
    Path.GetFullPath(path1).TrimEnd('\\'),
    Path.GetFullPath(path2).TrimEnd('\\'), 
    StringComparison.InvariantCultureIgnoreCase)

Ya da, eğer DirectoryInfo ile başlamak istiyorsanız:

String.Compare(
    dirinfo1.FullName.TrimEnd('\\'),
    dirinfo2.FullName.TrimEnd('\\'), 
    StringComparison.InvariantCultureIgnoreCase)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007