3 Aralık, 2009
Kategori:
yazılım |
Yorum ekle »
|
Hani Winamp’a bir klasör ekleriz, o tüm altdizinlerle birlikte tüm mp3 dosyalarını listeye ekler, böyle birşeyi yapan hızlı bir yöntem var mıdır bulamadım, kendim şöyle bir fonksiyon hazırladım, alınız kullanınız.
Özellikle sürükle-bırak ile iyi gider bu fonksiyon. Taranacak dizinlerin olduğu bir String Array alır, geriye tüm dosyaların olduğu String Array döndürür. Sürükle-bırak ile şöyle kullandım ben;
private void Form1_DragDrop(object sender, DragEventArgs e)
{
String[] Dosyalar = (String[])e.Data.GetData(DataFormats.FileDrop);
String[] TümDosyalar = İçerikOku(Dosyalar);
foreach (String Dosya in TümDosyalar)
{
richTextBox1.AppendText(Dosya + "\n");
}
}
private String[] İçerikOku(String[] Yollar)
{
String[] TümDosyalar = new String[0];
int indis = 0;
foreach (String Yol in Yollar)
{
if (File.Exists(Yol))
{
//bu bir dosyaymış
Array.Resize(ref TümDosyalar, TümDosyalar.Length + 1);
TümDosyalar[indis++] = Yol;
}
else
{
//bu bir dizinmiş
String[] AltDizinler = Directory.GetDirectories(Yol);
String[] AltDosyalar = Directory.GetFiles(Yol);
String[] AltYollar = new String[0];
int altyolindis = 0;
foreach (String AltDizin in AltDizinler)
{
Array.Resize(ref AltYollar, AltYollar.Length + 1);
AltYollar[altyolindis++] = AltDizin;
}
foreach (String AltDosya in AltDosyalar)
{
Array.Resize(ref AltYollar, AltYollar.Length + 1);
AltYollar[altyolindis++] = AltDosya;
}
//her alt dizin ve dosya için kendisini tekrar çağıralım
String[] DosyaTampon = İçerikOku(AltYollar);
for (int i = 0; i < DosyaTampon.Length; i++)
{
Array.Resize(ref TümDosyalar, TümDosyalar.Length + 1);
TümDosyalar[indis++] = DosyaTampon[i];
}
}
}
return TümDosyalar;
}
|