版权所有,禁止匿名转载;禁止商业使用。
1.文件浏览器 可以用于浏览本地的文件夹和文件。其实现了动态读取本地文件系统的内容。
var fso;
//函数“$”根据指定字符串获取相应ID的对象
function $(str){ return(document.getElementById(str)); }
//将给定的字符串中的特殊字符替换为HTML实体
function html_encode(strV){ return(strV.replace(/&/g,"&").replace(/"/g,""").replace(/ /g," ").replace(/\t/g," ").replace(/</g,"<").replace(/>/g,">").replace(/\r\n/g,"<br>")); }
//窗体载入完毕时初始化
window.onload = function(){ //创建FSO控件 fso = new ActiveXObject("Scripting.FileSystemObject"); //初始化显示 show_folder(); }
//获取系统中的所有驱动器
function get_drives(){ //根据FSO的drives属性进行枚举 var drvs=new Enumerator(fso.drives); //将返回值保存在数组中 var re=[]; //循环枚举过程 while(drvs.item()){ re.push(String(drvs.item())); drvs.moveNext(); } return(re); }
//获取指定目录下的文件
function get_subfiles(fd_path){ //调用FSO的getFolder方法获取文件夹对象 var fd=fso.getFolder(fd_path); //获取子文件 var fds=new Enumerator(fd.files); var re=[]; //枚举子文件列表 while(fds.item()){ //将文件路径存入数组 re.push(String(fds.item())); fds.moveNext(); } return(re); }
//获取指定目录下的子目录
function get_subfolders(fd_path){ //调用FSO的getFolder方法获取文件夹对象 var fd=fso.getFolder(fd_path); //获取子文件夹列表 var fds=new Enumerator(fd.subfolders); var re=[]; //枚举子文件夹列表 while(fds.item()){ //将文件夹路径存入数组 re.push(String(fds.item())); fds.moveNext(); } return(re); }
//以指定方式打开文件
function f_open(fileName, openMode, createIfNotExists){ return(fso.OpenTextFile(fileName, openMode, createIfNotExists)); }
//以文本方式一次性读取指定文件的所有内容并返回
function read_all(fileName){ var f, re; //打开文件 f = f_open(fileName, 1); //读出文件内容 try{ re = f.ReadAll(); }catch(e){} //关闭文件 f.Close(); return(re); } //显示指定文件夹的内容 function show_folder(path){ var folders, files, pfolder, tb, row, cell, obj, of, ext; //如果指定的文件夹路径存在 if(path && fso.folderExists(path)){ //获取子文件夹和文件名 folders = get_subfolders(path); files = get_subfiles(path); //获取指定的文件夹对象 pfolder = fso.getFolder(path).parentFolder; if(pfolder == path)pfolder = ""; }else{ //如果路径不存在则获取所有磁盘驱动器列表 folders = get_drives(); files = []; pfolder = ""; } //清空原先的显示 $("hutia").innerHTML = ""; //生成用于输出的表格 tb = document.createElement("table"); $("hutia").appendChild(tb); //如果指定的路径存在 if(path){ //显示回到父文件夹的链接 row = tb.insertRow(); cell = row.insertCell(); cell.colSpan = 3; obj = document.createElement("a"); cell.appendChild(obj); obj.path = pfolder; obj.innerHTML = "..\\" obj.href="#"; obj.onclick = nav; //改变“当前路径”标题 $("f_title").innerHTML = path; }else{ //指定路径不存在,显示“我的电脑” $("f_title").innerHTML = "我的电脑"; } //显示所有的子文件夹 for(var i in folders){ if(!folders[i])continue; //依次获取每个子文件夹对象 of = path?fso.getFolder(folders[i]):folders[i]; //插入新行 row = tb.insertRow(); cell = row.insertCell(); cell.width = "20px"; //第一个单元格插入文件夹的图标 obj = document.createElement("img"); cell.appendChild(obj); obj.src = "inc\\img\\folder.gif"; //第二个单元格插入子文件夹名称 cell = row.insertCell(); obj = document.createElement("a"); cell.appendChild(obj); obj.path = folders[i]; obj.innerHTML = path?of.name:of; obj.href="#"; //当子文件夹名称被点击,则调用函数“nav” obj.onclick = nav; //第三个单元格显示文件夹类型 cell = row.insertCell(); cell.width = "80px"; cell.innerHTML = path?of.type:"Disk"; } //显示所有子文件 for(var i in files){ if(!files[i])continue; //依次获取每个文件对象 of = path?fso.getFile(files[i]):files[i]; //获取文件扩展名 ext = String(files[i].match(/[^\.]+$/)); //插入新行 row = tb.insertRow(); cell = row.insertCell(); //第一个单元格插入文件的图标 obj = document.createElement("img"); cell.appendChild(obj); //根据文件扩展名的不同显示不同的图标 obj.src = "inc\\img\\"+(/^doc|htm|html|ppt|rar|txt|xls|zip$/i.test(ext)?("s."+ext+".gif"):"page_white.gif"); //第二个单元格插入文件名称 cell = row.insertCell(); obj = document.createElement("a"); cell.appendChild(obj); obj.path = files[i]; obj.ext = ext; obj.innerHTML = path?of.name + ":" + of.type:of; obj.href="#"; //当文件名称被点击,则调用函数“view” obj.onclick = view; //第三个单元格显示文件类型 cell = row.insertCell(); cell.innerHTML = path?of.type:"Disk"; } }