سایت ساز وبزیخرید بک لینک

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

شروع موضوع توسط shervin ‏21 ژانویه 2007 در انجمن asp , ASP.NET

  1. shervin

    shervin ASP.net

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

    Parham Registered User

    تاریخ عضویت:
    ‏24 سپتامبر 2003
    نوشته ها:
    1,036
    تشکر شده:
    1
    کلاسهای File و Directory و FileInfo و DirectoryInfo در System.IO تمام این امکانات رو فراهم میکنه. چه مشکلی داری باهاشون؟
     
  4. Y2K

    Y2K Registered User

    تاریخ عضویت:
    ‏20 فوریه 2006
    نوشته ها:
    592
    تشکر شده:
    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)
    
    			{
    				
    			اعمالی که با هر فایل میخوای انجام بدی
    			}
    
    		}
     
  5. Y2K

    Y2K Registered User

    تاریخ عضویت:
    ‏20 فوریه 2006
    نوشته ها:
    592
    تشکر شده:
    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 رو بصورت رشته می گیره
     
  6. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,316
    تشکر شده:
    260
    محل سکونت:
    تهران
    ایول عجب کامله:D
    من از تو MSDN تونستم کارارو انجام بدم خیلی چیزای دیگه هم یاد گرفتم
    تو تاپیک خودم خواستم بنویسم حالشو نداشتم تو چجوری اینهمه نوشتی؟
    دستت درد نکنه
    مزیتی نسبت به کلاسهای خود دات نت داره؟
     
  7. Y2K

    Y2K Registered User

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

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

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,316
    تشکر شده:
    260
    محل سکونت:
    تهران
    اسم فایل رو چجوری بگیرم؟با همون کلاس های خود دات نت
    وقتی میگیرم فقط آدرسشو میده و تو MSDN هیچ پراپرتی ای پیدا نکردم که فقط اسم رو برگردونه
     
  9. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,316
    تشکر شده:
    260
    محل سکونت:
    تهران
    کد:
      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)
     
  10. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,316
    تشکر شده:
    260
    محل سکونت:
    تهران
    من الان یه صفحه برای آپلود فایل ساختم ولی وقتی میخوام آپلود کنم میگه اجازه دسترسی به فولدر رو نداره
    چجوری اجازه بدم؟
    چطور هم فولدر میساخت هم فایل دیلیت میکرد ولی آپلود نمیتونه؟
    چجوری اجازه بدم؟
    وقتی رفت رو سرور اونوقت چجوری اجازه بدم؟
     
  11. H_R

    H_R مدیر بازنشسته

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

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

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

    • readme.doc
      اندازه فایل:
      154 KB
      نمایش ها:
      20
  12. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,316
    تشکر شده:
    260
    محل سکونت:
    تهران
    ممنون حسن جان
     
  13. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,284
    تشکر شده:
    17
    محل سکونت:
    North Pole
    خواهش میکنم :)
     
خرید و فروش ارزهای الکترونیکیخرید و فروش اتوماتیک ارزهای الکترونیکی عسل طبیعی و گرده گل ایرانی