برگزیده های پرشین تولز

کاربا فایل ها و فولدر ها در دات نت 2

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
میخواستم کارای زیر رو انجام بدم
1- لیست فایل های موجود دریک دایرکتوری رو طوری استخراج کنم که بتونم اسمو و تاریخ ایجادو سایزو ... رو تو دیتابیس ذخیره کنم
2- ادیت اسم فایل
3-ایجاد دایرکتوری جدید
4- دیلیت کردن فایل و ...
بقیشو هر وقت یادم اومد میگم
یه سری چیز میز پیدا کردم ولی درست حسابی نتونستم باهاشون کار کنم چون واسه دات نت یک بود انگار بعضی جاهاش تو 2 کار نمیکرد
مرسی:happy:
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
کلاسهای File و Directory و FileInfo و DirectoryInfo در System.IO تمام این امکانات رو فراهم میکنه. چه مشکلی داری باهاشون؟
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
سلام شروین
اینهایی که پرهام جان گفت درسته ولی من قبلا به یه روش دیگه کار کرده بودم
و از کامپوننت Microsoft Scripting Runtime استفاده کردم
اول این کامپوننت رو Add Reference کن ( داخل Visual Studio هست)
بعدش Using Scripting; رو به صفحه اضافه کن

برای جستجو از توابع زیر استفاده کن . دو تابع زیر تمام فایلهای و پوشه ها را تا آخرین پوشه پیدا می کنن
برای شروع آدرس جایی رو که میخوای فایلها و پوشه هاش رو پیدا کنی به تایع اول بفرست

تابع اول

کد:
Private  void GetFolderName(string folderpath)

		{
			Scripting.Folders fold ;
			FileSystemObject fso= new FileSystemObjectClass();
		
			fold = fso.GetFolder(folderpath).SubFolders;
			foreach(Scripting.Folder subfold in fold)
			{

اعمالی که میخوای با هر پوشه انجام بدی
								}
				GetFolderName(subfold.Path);
				GetFileName(subfold.Path);
						}
	}


تابع دوم

کد:
private void GetFileName(string filepath)
		{
			Scripting.Files  files ;
			FileSystemObject fso= new FileSystemObjectClass();
			files=fso.GetFolder(filepath).Files ;
			foreach(Scripting.File file in files)

			{
				
			اعمالی که با هر فایل میخوای انجام بدی
			}

		}
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
فرض کنیم می خواهیم اسم ، آدرس ، سایز و تاریخ تغییر و ... از هر فایل و پوشه رو توی یه گرید نشون بدیم

کد:
Private void createtable()
{



			DataTable dt=new DataTable();

			dt.Clear();
			DataColumn fname=new DataColumn("FileName");
			dt.Columns.Add(fname);
	
			DataColumn fpath=new DataColumn("FilePath");
			dt.Columns.Add(fpath);
			
			DataColumn ftype=new DataColumn("FileType");
			dt.Columns.Add(ftype);
			
		
			DataColumn fsize=new DataColumn("FileSize");
			dt.Columns.Add(fsize);
			
			DataColumn fdate=new DataColumn("FileDate");
			dt.Columns.Add(fdate);


}
بعدش تو اون توابع ستونهایی رو که میخوای میگیری و پر می کنی



کد:
Private  void GetFolderName(string folderpath)

		{
			Scripting.Folders fold ;
			FileSystemObject fso= new FileSystemObjectClass();
		
			fold = fso.GetFolder(folderpath).SubFolders;
			foreach(Scripting.Folder subfold in fold)
			{

				DataRow dr;
				dr=dt.NewRow();
			
		
				dr["FileType"]=folder.Type;
				dr["FileDate"]=folder.DateLastModified;
				dr["FilePath"]=folder.Path;
				dr["FileSize"]=folder.Size;
				dr["FileName"]=folder.Name;
			
				dt.Rows.Add(dr);


								}
				GetFolderName(subfold.Path);
				GetFileName(subfold.Path);
						}
	}





public void GetFileName(string filepath)
		{
			Scripting.Files  files ;
			FileSystemObject fso= new FileSystemObjectClass();
			files=fso.GetFolder(filepath).Files ;
			foreach(Scripting.File file in files)

			{
			
DataRow dr;
				dr=dt.NewRow();
			
		
				dr["FileType"]=file.Type;
				dr["FileDate"]=file.DateLastModified;
				dr["FilePath"]=file.Path;
				dr["FileSize"]=file.Size;
				dr["FileName"]=file.Name;
	dt.Rows.Add(dr);
				
	
						}

		}
برای استفاده از توابع بالا مثلا توی تابع لود صفحه آدرس رو به تابع اول پاس می کنی
GetFolderName(FolderPath);
و بلافاصله بعد از دستور بالا توی پیج لود دیتاتیبل رو با یه گرید بایند می کنی
dataTable.DataSource= dt;
نکته برای استفاده از تیبل هم می تونی تیبل رو به توابع ارسال کنی و هم اینکه پابلیک تعریفش کنی




برای ساختن پوشه


کد:
private void CreateNewFolder(string NewFolder,string folderpath)
		{
		
			
			string path1;
			path1=folderpath ;
			FileSystemObject fso= new FileSystemObjectClass();

			path1=path1+NewFolder+"\\";
		
			if (fso.FolderExists(path1)!=true) 
				if(NewFolder!=null) 
				{
					fso.CreateFolder(path1);
				}
			
		}

برای حذف فایل یا پوشه
تو این تابع من اسامی فایلها و پوشه ها رو ریخته بودم تو یه دیتالیست و یه چک باکس هم برای هر کدوم گذاشته بودم و کاربر با انتخاب هر کدوم و زدن دکمه حذف تابع زیر اتفاق می افتاد

کد:
private void DelFolder_Click(object sender, System.EventArgs e)
		{
			
			FileSystemObject fso=new FileSystemObjectClass();
			int itemcount=DataList1.Items.Count;
			int i=0;
			for(i=0;i< itemcount ;i++)
			{

				CheckBox check=new CheckBox();
				check=(CheckBox) DataList1.Items[i].FindControl("check");
				if(check.Checked==true )
				{
					if(fso.FileExists(DataList1.DataKeys[i].ToString()))
						fso.DeleteFile(DataList1.DataKeys[i].ToString(),true);
				if(fso.FolderExists(DataList1.DataKeys[i].ToString())==true)
						fso.DeleteFolder(DataList1.DataKeys[i].ToString(),true);

				}

			}
		
		}


نکته آدرس فایل ها یا پوشه ها رو برای دیتالیست به عنوان کلید اصلی تعریف کرده بودم و همونطوری که می بینی توی تابع کلید اصلی آیتم شماره I رو بصورت رشته می گیره
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
ایول عجب کامله:D
من از تو MSDN تونستم کارارو انجام بدم خیلی چیزای دیگه هم یاد گرفتم
تو تاپیک خودم خواستم بنویسم حالشو نداشتم تو چجوری اینهمه نوشتی؟
دستت درد نکنه
مزیتی نسبت به کلاسهای خود دات نت داره؟
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
در رابطه با مزیتش نمی دونم با اونا کار نکردم- حسین آقا و پرهام جان باید توضیح بدن

در رابطه با نوشتنش قبلا تو برنامه هام نوشته بودم
با کمی تغییر و تلخیص کپی کردم
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
اسم فایل رو چجوری بگیرم؟با همون کلاس های خود دات نت
وقتی میگیرم فقط آدرسشو میده و تو MSDN هیچ پراپرتی ای پیدا نکردم که فقط اسم رو برگردونه
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
اسم فایل رو چجوری بگیرم؟با همون کلاس های خود دات نت
وقتی میگیرم فقط آدرسشو میده و تو MSDN هیچ پراپرتی ای پیدا نکردم که فقط اسم رو برگردونه

کد:
  Dim di As New DirectoryInfo(path)
        Dim fileslist As FileInfo()
        Dim f As FileInfo
 fileslist = di.GetFiles
        lbl1 = New Label
        lbl1.Text = f.Name
        ncell.Controls.Add(lbl1)
        nrow.Cells.Add(ncell)
        tbl.Rows.Add(nrow)
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
من الان یه صفحه برای آپلود فایل ساختم ولی وقتی میخوام آپلود کنم میگه اجازه دسترسی به فولدر رو نداره
چجوری اجازه بدم؟
چطور هم فولدر میساخت هم فایل دیلیت میکرد ولی آپلود نمیتونه؟
چجوری اجازه بدم؟
وقتی رفت رو سرور اونوقت چجوری اجازه بدم؟
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
برای دادن پرمیشن این فایل اتچ شده رو بخون قسمت مربوط به این موضوع رو .

بری هاست هم باید به ساپرت بگی برات درستش میکنه .
 

فایل های ضمیمه

  • readme.doc
    154 KB · نمایش ها: 20

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
برای دادن پرمیشن این فایل اتچ شده رو بخون قسمت مربوط به این موضوع رو .

بری هاست هم باید به ساپرت بگی برات درستش میکنه .
ممنون حسن جان
 
بالا