Bir klasör yolu (C: \ Random Klasörü gibi) verildiğinde, içinde txt gibi belirli bir uzantıya sahip bir dosyayı nasıl bulabilirim? Dizinde * .txt için bir arama yapmak zorunda kalacağım, ancak bu aramayı ilk etapta nasıl başlatacağımı bilmiyorum.Klasörde belirli bir uzantıya sahip bir dosya bulun
cevap
System.IO.Directory
sınıfına ve GetFiles
statik yöntemine bakın. Bir yolu ve bir arama modelini kabul eden bir aşırı yük var. Örnek:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
Sen Directory sınıf
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
Uzantı, txt_ gibi bir şey ya da belgelere https://msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx –
Bu oldukça kolay aslında kullanabilirsiniz. sınıfını System.IO.Path
ile birlikte kullanabilirsiniz. Böyle bir şey (kullanarak LINQ daha da kolay hale getirir):
var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));
// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
.Select(fn => Path.GetFileNameWithoutExtension(fn));
elbette çok bu tekniği birçok varyasyonu vardır. Filtreniz daha basitse diğer cevaplardan bazıları daha basittir. Bu, gecikmiş numaralandırma (bu önemliyse) ve daha fazla kod pahasına daha esnek filtreleme avantajına sahiptir. Belirli uzantılı
Bunu eklediğiniz tüm ekstra işler için teşekkürler. Ancak, sadece bir metin dosyasına sahip olduğumdan (programım tarafından çıkarılmıştı) sadece basit bir açıklama yapacağım. – DMan
getiri altında yöntem yalnızca dosyaları (örn: .txt dosya değil .txt1):
benim anlayış gereğince
public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
{
return
Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
.Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
}
, bu iki şekilde yapılabilir 1) Dizin Sınıfı'nı Getfiles yöntemiyle kullanabilir ve gerekli uzantılarımızı kontrol etmek için tüm dosyalara geçebilirsiniz.
Directory.GetFiles ("your_folder_path) [i] .Contains (" *. Txt ")
2) Bir parametre ve doğrular olarak dosya yolunu alır GetExtension Yöntemi ile Yol Class kullanabilirsiniz extension.To dosya yolunu almak, sadece tek bir dosya getirmesi ve doğrulama için kullanılabilir dosyayolu dönecektir bir döngü durumunu var.
Path.GetExtension (your_file_path) .Equals ("json")
Not: Her iki mantık da döngü koşulunda olmalıdır.
Tüm kod dosya türleriyle birlikte bu dosya için bu kodu kullanın.
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
Teşekkürler! Bütün cevaplar iyiydi, ama önce cevap verdin ... evet :) – DMan
Eğer uzantı txt_ gibi bir şeyse işe yaramaz. Bir klasörde herhangi bir * .exe dosyası olup olmadığını belirlemeye çalışıyorum ve sadece bir * .exe_ dosyası var, ancak sorgu, doğru değil, onu döndürür. – Adrian
Belgeler: https://msdn.microsoft.com/en-us/library/8he88b63(v=vs.110).aspx –