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
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)
Nasıl Git deposu için boş bir dizin ek...
Nasıl bir dizin özyinelemeli olarak tü...
Nasıl SVN ile bir dizin görmezden?...
Nasıl eğer bir dizin zaten mevcut deği...
Nasıl "Varolan Madde" Ekleyin...