Saya ingin membuat daftar setiap file dan direktori yang ada dalam direktori dan subdirektori dari direktori itu. Jika saya memilih C: \ sebagai direktori, program akan mendapatkan setiap nama dari setiap file dan folder pada hard drive yang dapat diaksesnya.
Daftar mungkin terlihat seperti ini
fd \ 1.txt fd \ 2.txt fd \ a \ fd \ b \ fd \ a \ 1.txt fd \ a \ 2.txt fd \ a \ a \ fd \ a \ b \ fd \ b \ 1.txt fd \ b \ 2.txt fd \ b \ a fd \ b \ b fd \ a \ a \ 1.txt fd \ a \ a \ a \ fd \ a \ b \ 1.txt fd \ a \ b \ a fd \ b \ a \ 1.txt fd \ b \ a \ a \ fd \ b \ b \ 1.txt fd \ b \ b \ a
c#
directory
subdirectory
getdirectories
derp_in_mouth
sumber
sumber
Jawaban:
dimana
*.*
pola untuk mencocokkan fileJika Direktori juga diperlukan, Anda dapat melakukannya seperti ini:
sumber
Lsit<>
kelas? Apa yang dikembalikan GetFiles? Dan bagaimana dengan nama direktori yang juga diminta?GetFiles
Metode mengembalikan sebuah array string.Directory.GetFileSystemEntries
ada di .NET 4.0+ dan mengembalikan file dan direktori. Sebut saja seperti ini:Perhatikan bahwa ini tidak akan mengatasi upaya untuk membuat daftar konten subdirektori yang tidak Anda miliki aksesnya (UnauthorizedAccessException), tetapi ini mungkin cukup untuk kebutuhan Anda.
sumber
Gunakan
GetDirectories
danGetFiles
metode untuk mendapatkan folder dan file.Gunakan juga untuk mendapatkan folder dan file di subfolder.
SearchOption
AllDirectories
sumber
Path
menawarkan metode yang lebih andal.Path
untuk menghapus bagian kiri jalan tetap, misalnya `C:` dalam contoh yang diberikan.path.SubString(2)
menghapus huruf drive dan titik dua secara naif? Bagaimana jika direktori tersebut adalah jaringan bersama? Saya sarankanPath
sebagai metode yang andal karena dapat memberikan banyak barang di area ini. Dalam hal ini, Anda boleh menulisfilePath.Substring(Path.GetPathRoot(filePath).Length)
. Ya, ini menggunakan Substring karena ini yang paling ringkas.sumber
Saya khawatir,
GetFiles
metode ini mengembalikan daftar file tetapi bukan direktori. Daftar di pertanyaan meminta saya bahwa hasilnya harus menyertakan folder juga. Jika Anda ingin daftar yang lebih disesuaikan, Anda dapat mencoba meneleponGetFiles
danGetDirectories
secara rekursif. Coba ini:Tip: Anda dapat menggunakan
FileInfo
danDirectoryInfo
kelas jika Anda perlu memeriksa atribut tertentu.sumber
Anda dapat menggunakan FindFirstFile yang mengembalikan sebuah pegangan dan kemudian secara rekursif memanggil fungsi yang memanggil FindNextFile. Ini adalah pendekatan yang baik karena struktur yang direferensikan akan diisi dengan berbagai data seperti alternativeName, lastTmeCreated, modified, atribut dll.
Tetapi saat Anda menggunakan .net framework, Anda harus memasuki area yang tidak dikelola.
sumber
Beberapa versi yang ditingkatkan dengan max lvl untuk turun di direktori dan opsi untuk mengecualikan folder:
direktori masukan:
output dari fungsi (konten folder5 dikecualikan karena batas lvl dan konten folder3 dikecualikan karena berada dalam array excludedFolders):
sumber
Jika Anda tidak memiliki akses ke subfolder di dalam pohon direktori, Directory.GetFiles berhenti dan menampilkan pengecualian yang menghasilkan nilai null dalam string penerima [].
Di sini, lihat jawaban ini https://stackoverflow.com/a/38959208/6310707
Ini mengelola pengecualian di dalam loop dan terus bekerja sampai seluruh folder dilalui.
sumber
cara yang logis dan teratur:
sumber
Berikut contoh tercepat (tidak diparalelkan) daftar file dan sub-folder dalam pengecualian penanganan pohon direktori. Akan lebih cepat jika menggunakan Directory.EnumerateDirectories menggunakan SearchOption.AllDirectories untuk menghitung semua direktori, tetapi metode ini akan gagal jika mengenai UnauthorizedAccessException atau PathTooLongException.
Menggunakan tipe kumpulan Tumpukan generik, yang merupakan tumpukan terakhir masuk pertama keluar (LIFO) dan tidak menggunakan rekursi. Dari https://msdn.microsoft.com/en-us/library/bb513869.aspx , memungkinkan Anda untuk menghitung semua sub-direktori dan file dan menangani pengecualian tersebut secara efektif.
sumber
Saya menggunakan kode berikut dengan formulir yang memiliki 2 tombol, satu untuk keluar dan yang lainnya untuk memulai. Dialog browser folder dan dialog simpan file. Kode tercantum di bawah ini dan berfungsi di sistem saya Windows10 (64):
sumber
Dengan ini Anda bisa menjalankannya dan memilih sub folder saat konsol dijalankan
dan ini patchar untuk ekspor XML
sumber
sumber
Sebuah littlebit sederhana dan lambat tapi bekerja !! jika Anda tidak memberikan jalur file pada dasarnya gunakan "fixPath" ini hanya contoh .... Anda dapat mencari fileType yang benar apa yang Anda inginkan, saya melakukan kesalahan saat memilih nama daftar karena "temporaryFileList adalah daftar file yang dicari jadi lanjutkan itu .... dan "errorList" berbicara untuk dirinya sendiri
sumber
Buat Daftar String
sumber
dir / s / b .> results.txt
/ s = subfolder / b = menanggung hasil
sumber