PDA

View Full Version : فیلتر کردن فایل های دارکتوری



kingtak
یک شنبه 15 بهمن 1391, 02:00 صبح
سلام دوستان
من با این حلقه همه فایل های یه دارکتوری رو بدست میارم و توی TreeView نشون میدم.فقط یه مشکل دارم.
من میخوام فایل هارو فیلتر کنم.مثلا فقط فایلهای متنیtxt رو بدست بیارم.ولی کد من همه فایل هارو برمیگردونه.
یه سوال دیگه!میخوام فقط اسم فایل رو بگیرم و پسوندش رو نمی خوام.

foreach (string s in Directory.GetFiles(item.Tag.ToString()))
{
TreeViewItem subitem = new TreeViewItem();
subitem.Header = s.Substring(s.LastIndexOf("\\") + 1);
subitem.Tag = s;
subitem.FontWeight = FontWeights.Normal;
subitem.Expanded += new RoutedEventHandler(folder_Expanded);
item.Items.Add(subitem);
}

plus
یک شنبه 15 بهمن 1391, 04:03 صبح
برای فیلتر فرمت:

Directory.GetFiles(item.Tag.ToString(), "*.txt")

برای گرفتن فایل بدون پسوند:

subitem.Header = Path.GetFileNameWithoutExtension(s);

kingtak
یک شنبه 15 بهمن 1391, 11:03 صبح
برای فیلتر فرمت:

Directory.GetFiles(item.Tag.ToString(), "*.txt")

برای گرفتن فایل بدون پسوند:

subitem.Header = Path.GetFileNameWithoutExtension(s);


ممنون دوست عزیز.خیلی درگیرش بودم.
فقط کد دومی کار نکرد. Path چیزی به اسم .GetFileNameWithoutExtension نمیشناسه.
این هم متن خطا:

'System.Windows.Shapes.Path' does not contain a definition for 'GetFileNameWithoutExtension'

kingtak
یک شنبه 15 بهمن 1391, 11:37 صبح
من با این کد تونستم مشکلو حل کنم:

subitem.Header = System.IO.Path.GetFileNameWithoutExtension(s);

ولی یه مشکلی دارم.
من یه تابع دارم که کارش اینه اگه فرمت فایل مثلا txt بود فلان آیکن رو براش بذاره.به این صورت:

if((value as string).EndsWith("txt"))
{
Uri uri = new Uri("pack://application:,,,/Images/file_qxp.png");
BitmapImage source = new BitmapImage(uri);
return source;
}


ولی حالا نمیتونه تشخیص بده فرمت فایل چیه؟الان باید شرط رو چطوری بذارم؟

plus
یک شنبه 15 بهمن 1391, 11:59 صبح
خوب اگه این کد رو داخل همون for each میگذارید، به s (مسیر کامل) دسترسی دارین و گرنه، بالاخره باید با یک روشی اون رو انتقال بدین، اگه کد کامل رو بگذارین میشه گفت موضوع چیه.

kingtak
یک شنبه 15 بهمن 1391, 12:12 عصر
ان کلاسیه که از نتیجه حلقه برای فایل ها و فولدر ها آیکن میذاره

#region HeaderToImageConverter

[ValueConversion(typeof(string), typeof(bool))]
public class HeaderToImageConverter : IValueConverter
{
public static HeaderToImageConverter Instance = new HeaderToImageConverter();

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value as string).Contains(@"\"))
{
Uri uri = new Uri("pack://application:,,,/Images/diskdrive.png");
BitmapImage source = new BitmapImage(uri);
return source;
}
else if ((value as string).EndsWith("txt"))
{
Uri uri = new Uri("pack://application:,,,/Images/file_qxp.png");
BitmapImage source = new BitmapImage(uri);
return source;
}
else
{
Uri uri = new Uri("pack://application:,,,/Images/folder.png");
BitmapImage source = new BitmapImage(uri);
return source;
}
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException("Cannot convert back");
}
}

#endregion // DoubleToIntegerConverter