Temukan file dengan ekstensi tertentu di folder


93

Diberikan jalur folder (seperti C:\Random Folder), bagaimana saya dapat menemukan file di dalamnya yang memiliki ekstensi tertentu, seperti txt? Saya berasumsi bahwa saya harus melakukan pencarian *.txtdi direktori, tetapi saya tidak yakin bagaimana saya harus memulai pencarian ini.

Jawaban:


180

Lihatlah System.IO.Directorykelas dan metode statisnya GetFiles. Ini memiliki kelebihan yang menerima jalur dan pola pencarian. Contoh:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");

Terima kasih! Semua jawaban bagus, tapi Anda menjawab lebih dulu jadi ... ya :)
Dominic K

6
Ini tidak berfungsi jika ekstensinya seperti txt_. Saya mencoba untuk menentukan apakah ada file * .exe dalam sebuah folder, dan saya hanya memiliki satu file * .exe_, tetapi kueri mengembalikannya, yang mana tidak benar.
Adrian


Bagaimana jika saya ingin file tunggal yang bernama sepertimacos.txt
Prashant Pimpale

Saya ingin mencari semua file tanpa ekstensi apa pun. Saya memiliki beberapa file dengan jenis file "file" (tanpa ekstensi), bagaimana cara menemukan file tersebut?
sohaiby


14

Sebenarnya cukup mudah. Anda dapat menggunakan System.IO.Directorykelas bersama dengan System.IO.Path. Sesuatu seperti (menggunakan LINQ membuatnya lebih mudah):

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));

Ada banyak variasi teknik ini juga, tentunya. Beberapa jawaban lain lebih sederhana jika filter Anda lebih sederhana. Yang ini memiliki keuntungan dari pencacahan yang tertunda (jika itu penting) dan penyaringan yang lebih fleksibel dengan mengorbankan lebih banyak kode.


Terima kasih atas semua kerja ekstra yang Anda lakukan untuk ini. Namun, saya hanya menggunakan pernyataan sederhana karena saya hanya memiliki satu file teks di direktori (itu diekstraksi oleh program saya).
Dominic K

3

Metode di bawah ini hanya mengembalikan file dengan ekstensi tertentu (misalnya: file dengan .txt tetapi tidak .txt1)

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));
    }

1

Sesuai pemahaman saya, ini dapat dilakukan dengan dua cara:

1) Anda dapat menggunakan Kelas Direktori dengan metode Getfiles dan melintasi semua file untuk memeriksa ekstensi yang kami butuhkan.

Directory.GetFiles ("your_folder_path) [i] .Contains (" *. Txt ")

2) Anda dapat menggunakan Path Class dengan Metode GetExtension yang mengambil path file sebagai parameter dan memverifikasi ekstensi. Untuk mendapatkan path file, cukup memiliki kondisi perulangan yang akan mengambil satu file dan mengembalikan filepath yang dapat digunakan untuk verifikasi.

Path.GetExtension (your_file_path) .Equals (". Json")

Catatan: Kedua logika harus berada di dalam kondisi perulangan.


-1

Gunakan kode ini untuk membaca file dengan semua jenis file ekstensi.

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.