ASP.NET+XML打造网络硬盘原理分析(2)


public void CreateXmlOrAddFrag(string xmlFullPath,string
folderFullPath,string owner,string password,int type){
XmlDocument xmlDoc=new XmlDocument();
string xml="";
string xmlNode="<character>";
xmlNode+="<fullPath>";
xmlNode+=folderFullPath;
xmlNode+="</fullPath>";
xmlNode+="<owner>";
xmlNode+=owner;
xmlNode+="</owner>";
xmlNode+="<password>";
xmlNode+=password;
xmlNode+="</password>";
xmlNode+="<type>";
xmlNode+=type;
xmlNode+="</type>";
xmlNode+="</character>";
if(!File.Exists(xmlFullPath)){//不存在则创建xml存储文件
xml="<?xml version='1.0' encoding='gb2312'?>";
xml+="<folder>";
xml+=xmlNode;
xml+="</folder>";
xmlDoc.LoadXml(xml);
xmlDoc.Save(xmlFullPath);//存储文件
}
else{//存在xml存储文件则添加新的文档片段
xmlDoc.Load(xmlFullPath);
XmlDocumentFragment
docFrag=xmlDoc.CreateDocumentFragment();//文档片元素节点
docFrag.InnerXml=xmlNode;
XmlNode currNode=xmlDoc.DocumentElement;//获取文档根节淀
currNode.InsertBefore(docFrag,currNode.FirstChild);//插入文档段
xmlDoc.Save(xmlFullPath);//存储改变
}
}


  其中,参数fileFullPath是存储文件夹信息的xml文件路径,folderFullPath是此新文件夹路径,owner是创建人名,password是密码,type表示限制操作的类型("0"表示进入受限,"1"表示删除受限)。在程序运行之初,存储文件夹信息的folder.xml文件可能尚不存在,所以程序中首先判断这个文件是否存在,不存在则动态创建这个文件,这之后新建文件夹时,将只需要添加文档片段。这里,对Xml文件的读写通过DOM(文档对象模型)来实现,由于此处Xml文件不会太大,这种方式不会对内存资源要求太高,速度也会很快!

  3、对文件及文件夹的操作:

  对文件的操作包括"下载"和"删除"两种,在上面列表显示指定文件夹中内容时,针对文件,有这样的语句:

dr[2]="<a href="https://www.jb51.net/article/+url+" target=_blank"+">下载</a>";//建立联接地址

  其中,url是指定文件对应的服务器路径。 通过这样的链接将文件定位到服务器上的对应位置。视文件格式的不同,客户端可以下载文件到本机上,也可以就在服务器上打开它。

  删除文件很简单,.Net的IO命名空间的File类库有这样的方法:

File.Delete(string filename);其中,filename为文件的完整路径

  你需要注意的是,文件的删除将不需要验证,要防止文件被删除,你需要依照下面的方式来进行。(当然,程序中为避免文件误删除提供了确认验证,文件夹删除也一样!)

  对文件夹的操作分为:进入或者删除。如果文件夹在创建时被设置"进入受限"或者"删除受限",用户在执行这样的操作时将被要求密码验证,只有通过验证才能完成相应的操作,这种方式保护了你的文件被非法访问或删除。

  相对文件的删除,文件夹的删除程序要稍微复杂些,.Net的Directory类库提供的方法Delete()只能删除空文件夹,这就需要我们首先清空文件夹中内容,然后才能完成这一操作,由于文件夹中还可能再包含有文件夹,我们通过递归调用来实现这一操作:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjdsds.html