面向对象—在线文件管理模块

在园子里看到好多关于在线文件管理系统的文章和源代码,大家实际上达到的目的其实多大同小异,但是采用的实现的方式大有不同。

本人刚好在项目中应用到在线文件管理模块,如实自己开始写了一个Demo,当然也参考了网上高人写的代码,下面介绍我对这个模块实现的思路和实现。

 

实现思路介绍:

文件对象        FileSystemItem.cs

文件操作管理类  FileSystemManager.cs

界面            Demo.aspx

Js              jqModal.js   弹出窗口

 

文件对象

此类对文件对象的属性进行封装。

 using System;

复制代码
using System.Collections.Generic;
using System.Text;

namespace FileManager
{
     ///   <summary>
    
///  FileSystemItem
    
///   </summary>
     public  class FileSystemItem
    {
         private  string _Name;
         private  string _FullName;

         private DateTime _CreationDate;
         private DateTime _LastAccessDate;
         private DateTime _LastWriteDate;

         private  bool _IsFolder;

         private  long _Size;
         private  long _FileCount;
         private  long _SubFolderCount;

         private  string _Version;

         ///   <summary>
        
///  名称
        
///   </summary>
         public  string Name
        {
             get
            {
                 return _Name;
            }
             set
            {
                _Name = value;
            }
        }

         ///   <summary>
        
///  完整目录
        
///   </summary>
         public  string FullName
        {
             get
            {
                 return _FullName;
            }
             set
            {
                _FullName = value;
            }
        }

         ///   <summary>
        
///  创建时间
        
///   </summary>
         public DateTime CreationDate
        {
             get
            {
                 return _CreationDate;
            }
             set
            {
                _CreationDate = value;
            }
        }

         ///   <summary>
        
///  是否是文件夹
        
///   </summary>
         public  bool IsFolder
        {
             get
            {
                 return _IsFolder;
            }
             set
            {
                _IsFolder = value;
            }
        }

         ///   <summary>
        
///  大小
        
///   </summary>
         public  long Size
        {
             get
            {
                 return _Size;
            }
             set
            {
                _Size = value;
            }
        }

         ///   <summary>
        
///  访问时间
        
///   </summary>
         public DateTime LastAccessDate
        {
             get
            {
                 return _LastAccessDate;
            }
             set
            {
                _LastAccessDate = value;
            }
        }

         ///   <summary>
        
///  修改时间
        
///   </summary>
         public DateTime LastWriteDate
        {
             get
            {
                 return _LastWriteDate;
            }
             set
            {
                _LastWriteDate = value;
            }
        }

         ///   <summary>
        
///  文件数
        
///   </summary>
         public  long FileCount
        {
             get
            {
                 return _FileCount;
            }
             set
            {
                _FileCount = value;
            }
        }

         ///   <summary>
        
///  文件夹数
        
///   </summary>
         public  long SubFolderCount
        {
             get
            {
                 return _SubFolderCount;
            }
             set
            {
                _SubFolderCount = value;
            }
        }

         ///   <summary>
        
///  版本
        
///   </summary>
        
///   <returns></returns>
         public  string Version()
        {
             if (_Version ==  null)
                _Version = GetType().Assembly.GetName().Version.ToString();

             return _Version;
        }

    }
}
复制代码

文件操作类

此类封装对文件的,新建,重命名,删除,复制,剪贴,上传等操作。

 using System;

复制代码
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;

namespace FileManager
{
     ///   <summary>
    
///  FileSystemManager
    
///   </summary>
     public  class FileSystemManager
    {
         private  static  string strRootFolder;

         static FileSystemManager()
        {
            strRootFolder = HttpContext.Current.Request.PhysicalApplicationPath;
            strRootFolder = strRootFolder.Substring( 0, strRootFolder.LastIndexOf( @" \ "));
        }

         ///   <summary>
        
///  读根目录
        
///   </summary>
        
///   <returns></returns>
         public  static  string GetRootPath()
        {
             return strRootFolder;
        }

         ///   <summary>
        
///  写根目录
        
///   </summary>
        
///   <param name="path"></param>
         public  static  void SetRootPath( string path)
        {
            strRootFolder = path;
        }

         ///   <summary>
        
///  读取列表
        
///   </summary>
        
///   <returns></returns>
         public  static List<FileSystemItem> GetItems()
        {
             return GetItems(strRootFolder);
        }

         ///   <summary>
        
///  读取列表
        
///   </summary>
        
///   <param name="path"></param>
        
///   <returns></returns>
         public  static List<FileSystemItem> GetItems( string path)
        {
             string[] folders = Directory.GetDirectories(path);
             string[] files = Directory.GetFiles(path);
            List<FileSystemItem> list =  new List<FileSystemItem>();
             foreach ( string s  in folders)
            {
                FileSystemItem item =  new FileSystemItem();
                DirectoryInfo di =  new DirectoryInfo(s);
                item.Name = di.Name;
                item.FullName = di.FullName;
                item.CreationDate = di.CreationTime;
                item.IsFolder =  true;
                list.Add(item);
            }
             foreach ( string s  in files)
            {
                FileSystemItem item =  new FileSystemItem();
                FileInfo fi =  new FileInfo(s);
                item.Name = fi.Name;
                item.FullName = fi.FullName;
                item.CreationDate = fi.CreationTime;
                item.IsFolder =  true;
                item.Size = fi.Length;
                list.Add(item);
            }

             if (path.ToLower() != strRootFolder.ToLower())
            {
                FileSystemItem topitem =  new FileSystemItem();
                DirectoryInfo topdi =  new DirectoryInfo(path).Parent;
                topitem.Name =  " [上一级] ";
                topitem.FullName = topdi.FullName;
                list.Insert( 0, topitem);

                FileSystemItem rootitem =  new FileSystemItem();
                DirectoryInfo rootdi =  new DirectoryInfo(strRootFolder);
                rootitem.Name =  " [根目录] ";
                rootitem.FullName = rootdi.FullName;
                list.Insert( 0, rootitem);

            }
             return list;
        }

         ///   <summary>
        
///  读取文件夹
        
///   </summary>
        
///   <param name="name"></param>
        
///   <param name="parentName"></param>
         public  static  void CreateFolder( string name,  string parentName)
        {
            DirectoryInfo di =  new DirectoryInfo(parentName);
            di.CreateSubdirectory(name);
        }

         ///   <summary>
        
///  删除文件夹
        
///   </summary>
        
///   <param name="path"></param>
         public  static  void DeleteFolder( string path)
        {
            Directory.Delete(path);
        }

         ///   <summary>
        
///  移动文件夹
        
///   </summary>
        
///   <param name="oldPath"></param>
        
///   <param name="newPath"></param>
         public  static  void MoveFolder( string oldPath,  string newPath)
        {
            Directory.Move(oldPath, newPath);
        }

         ///   <summary>
        
///  创建文件
        
///   </summary>
        
///   <param name="filename"></param>
        
///   <param name="path"></param>
         public  static  void CreateFile( string filename,  string path)
        {
            FileStream fs = File.Create(path +  " \\ " + filename);
            fs.Close();
        }

         ///   <summary>
        
///  创建文件
        
///   </summary>
        
///   <param name="filename"></param>
        
///   <param name="path"></param>
        
///   <param name="contents"></param>
         public  static  void CreateFile( string filename,  string path,  byte[] contents)
        {
            FileStream fs = File.Create(path +  " \\ " + filename);
            fs.Write(contents,  0, contents.Length);
            fs.Close();
        }

         ///   <summary>
        
///  删除文件
        
///   </summary>
        
///   <param name="path"></param>
         public  static  void DeleteFile( string path)
        {
            File.Delete(path);
        }

         ///   <summary>
        
///  移动文件
        
///   </summary>
        
///   <param name="oldPath"></param>
        
///   <param name="newPath"></param>
         public  static  void MoveFile( string oldPath,  string newPath)
        {
            File.Move(oldPath, newPath);
        }

         ///   <summary>
        
///  读取文件信息
        
///   </summary>
        
///   <param name="path"></param>
        
///   <returns></returns>
         public  static FileSystemItem GetItemInfo( string path)
        {
            FileSystemItem item =  new FileSystemItem();
             if (Directory.Exists(path))
            {
                DirectoryInfo di =  new DirectoryInfo(path);
                item.Name = di.Name;
                item.FullName = di.FullName;
                item.CreationDate = di.CreationTime;
                item.IsFolder =  true;
                item.LastAccessDate = di.LastAccessTime;
                item.LastWriteDate = di.LastWriteTime;
                item.FileCount = di.GetFiles().Length;
                item.SubFolderCount = di.GetDirectories().Length;
            }
             else
            {
                FileInfo fi =  new FileInfo(path);
                item.Name = fi.Name;
                item.FullName = fi.FullName;
                item.CreationDate = fi.CreationTime;
                item.LastAccessDate = fi.LastAccessTime;
                item.LastWriteDate = fi.LastWriteTime;
                item.IsFolder =  false;
                item.Size = fi.Length;
            }
             return item;
        }

         ///   <summary>
        
///  复制文件夹
        
///   </summary>
        
///   <param name="source"></param>
        
///   <param name="destination"></param>
         public  static  void CopyFolder( string source,  string destination)
        {
            String[] files;
             if (destination[destination.Length -  1] != Path.DirectorySeparatorChar)
                destination += Path.DirectorySeparatorChar;
             if (!Directory.Exists(destination)) Directory.CreateDirectory(destination);
            files = Directory.GetFileSystemEntries(source);
             foreach ( string element  in files)
            {
                 if (Directory.Exists(element))

                    CopyFolder(element, destination + Path.GetFileName(element));
                else
                    File.Copy(element, destination + Path.GetFileName(element), true);
            }
        }
    }
}

复制代码

界面:

      

总结:

本人虽然从事软件开发实1年多,但是对面向对象的理解还是不太透彻,也许可能实战还不够经验不足,希望和园友一起探讨和交流,提出宝贵建议和意见。

本人QQ:541719273  (向雄)

源代码下载:http://www.cnblogs.com/binb/archive/2012/08/21/zoubin_onlinefilemanager.html  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值