FileSystemObject (FSO)对象方法总结及应用

FileSystemObject (FSO)组件可以用来处理系统驱动器,文件夹,和文件。因为它是一个ActiveX控件,所以它能被js,vbs等文件使用,以实现对机器文件系统的操作。

下面将总结一下FSO中的对象和方法,其实FSO中大多数的方法都能顾名思义,很简单,所以对于大多数函数都只是简单的罗列一下。

一.新建FileSystemObject对象
var fso = new ActiveXObject("Scripting.FileSystemObject");
注意:FileSystemObject对象只能创建一次!


二.FileSystemObject对象下的相关函数
1.Driver相关:
DriveExists(drivespec):判断驱动器是否存在,参数可以是"C","C:","C:\","\\computer\share"等形式
GetDrive ( drivespec ):获取Driver对象,获取后可以对该对象进行更进一步的操作,参数可以是"C","C:","C:\","\\computer\share"等形式
GetDriveName(path):获取一个地址的驱动名,这个函数只关注path字符串,不关注该路径是否存在
Drives属性:获取所有的driver

2.Folder相关:
FolderExists(folderspec):判断Folder是否存在
CreateFolder(foldername):创建Folder,并返回Folder对象
GetFolder(folderspec):获取Folder对象,获取后可以对该对象进行更进一步的操作
DeleteFolder ( folderspec[, force] ):删除Folder,默认情况下不会删除只读文件夹,但是可以通过将force设为true来删除只读文件夹.
CopyFolder ( source, destination[, overwrite] ):复制文件夹.当overwrite为true时会覆盖原有的文件夹。有如下几种复制方法。
a.当source只是一个简单的路径,且destination后面不以"\"结束时,将新建destination文件夹,并将source下的文件都拷贝到destination下。
filesys.CopyFolder("c:\\test1","c:\\test3");
拷贝test1下的文件到test3,如果test3文件夹不存在将先新建test3文件夹。
b.当source只是一个简单的路径,且destination后面以"\"结束时,将认为destination文件夹已经存在,并将source文件夹拷贝到destination下。
filesys.CopyFolder("c:\\test1","c:\\test2\\");
拷贝test1到test2文件夹下,如果test2文件夹不存在将报错。
c.当source是通配符的形式,不管destination后面是否以"\"结束,都将认为destination文件夹已经存在,并将source代表的所有文件夹拷贝到destination下。
filesys.CopyFolder("c:\\test1\\*","c:\\test2\\");
拷贝test1下的所有文件夹(不包括文件)到test2文件夹下.

MoveFolder ( source, destination ):移动文件夹,用法参见CopyFolder函数.


3.File相关:
FileExists(filespec):判断File是否存在
CreateTextFile(filename[, overwrite[, unicode]]):创建File对象并返回TextStream对象
OpenTextFile(filename[, iomode[, create[, format]]]):打开文件并返回TextStream对象
iomode的值为1时为只读(默认),为2时为写,为8时为append模式.值为-2时用系统默认的方式打开.为-1时按Unicode打开,为0是按ASCII打开.

GetFile(filespec):获取File对象,获取后可以对该对象进行更进一步的操作
DeleteFile ( filespec[, force] ):删除File,默认情况下不会删除只读文件,但是可以通过将force设为true来删除只读文件
filesys.DeleteFile("c:\\test1\\*");将删除test1目录下所有文件
CopyFile ( source, destination[, overwrite] ):复制文件.当overwrite为true时会覆盖原有的文件夹。有如下几种复制方法。
a.当source只是一个简单的路径,且destination后面不以"\"结束时,将新建destination文件夹,并将source拷贝到destination下。
filesys.CopyFolder("c:\\test1\1.txt","c:\\test3.txt");
拷贝test1下的文件到test3,如果test3文件夹不存在将先新建test3文件夹。
b.当source只是一个简单的路径,且destination后面以"\"结束时,将认为destination文件夹已经存在,并将source文件夹拷贝到destination下。
filesys.CopyFolder("c:\\test1\1.txt","c:\\test2\\");
拷贝test1到test2文件夹下,如果test2文件夹不存在将报错。
c.当source是通配符的形式,不管destination后面是否以"\"结束,都将认为destination文件夹已经存在,并将source代表的所有文件夹拷贝到destination下。
filesys.CopyFile("c:\\test1\\*","c:\\test2\\");
拷贝test1下的所有文件(不包括文件夹)到test2文件夹下.

MoveFile ( source, destination ):移动文件,用法参见CopyFile函数.
GetFileVersion(filespec):获取文件的版本信息,大多数文件都没有版本信息的,所以这个函数经常返回空字符串.

4.路径的处理相关:
下面的一些函数除了GetSpecialFolder外都只是单纯的字符串处理操作,并不关注相应的路径或文件是否存在.
BuildPath(path, name):根据路径和名字生成完整的路径.
filesys.BuildPath("c:\\jingle","2" )将返回"c:\jingle\2"
GetAbsolutePathName(pathspec):根据相对路径或模糊的路径得到绝对路径.绝对路径的获取和语句执行的当前路径有关.
GetParentFolderName(path):获取路径的上级路径,这个函数只关注path字符串,不关注该路径是否存在
GetFileName(pathspec):根据路径获取文件名称(包括后缀).
GetBaseName(path):获取文件名(不包括后缀)
GetExtensionName(path):获取文件后缀
GetTempName():生成以.tmp为后缀的临时文件名

GetSpecialFolder(folderspec):用于获取几个特殊的系统目录.参数0将获取Windows目录对象,1获取System目录对象,2获取Temp目录

对象
下面的例子将你的临时文件的地址写入testfile.txt中.
var fd = filesys.GetSpecialFolder(2);
var myfile = filesys.CreateTextFile("c:\\testfile.txt");
myfile.WriteLine(fd.Path);
myfile.close();

5.一个特殊的函数:
GetStandardStream(standardStreamType [, unicode ]):获取相应的TextStream对象.参数为0是输入流,1是输出流,2是错误流.
这个函数在js脚本里面其实并不怎么用得上


三.Drive的属性
AvailableSpace:获取可用空间大小(bytes)
FreeSpace:同上,区别只在于在某些系统下显示的格式不一样
TotalSize:获取总大小(bytes)
DriveLetter:Drive的相应字符,network drive将返回空字符串
DriveType:0未知,1:Removable,2:Fixed,3: Network,4:CD-ROM,5:RAM Disk
IsReady:对Removable和CD-ROM来说只有相应的设备可以访问了才返回true,当该属性为false时,很多其他属性无法获取
Path:路径
FileSystem:返回FAT, NTFS, and CDFS等值
RootFolder:返回Driver所代表的路径的Folder对象。
SerialNumber:返回SerialNumber,这个属性主要用来确保插入了正确的removable media
ShareName:返回network drive的路径
VolumeName:返回VolumeName信息,VolumeName就是咱自己对盘符定义的名字

四.Folder的方法和属性
Folder的方法有Copy,Delete,Move,CreateTextFile这些方法的用法分别参见

FileSystemObject.CopyFolder,FileSystemObject.DeleteFolder,FileSystemObject.MoveFolder,FileSystemObject.CreateTextFil

e方法。
Attributes:文件夹的属性.将返回下面数值的或值.
0:Normal
1:ReadOnly可设
2:Hidden可设
4:System可设
8:Volumn
16:Directory是否是文件夹
32:Achive即文件在上次备份后被改动过,可设
1024:Alias是否是链接或快捷方式
2048:Compressed是否被压缩

DateCreated:创建时间
DateLastAccessed:最后访问时间
DateLastModified:最后修改时间
Drive:文件夹所在的Driver letter
Files:文件夹下的所有文件,不包括文件夹,可用Count属性得到其文件数,用Item依次进行访问。
SubFolders:文件夹下所有的子文件夹,可用Count属性得到其文件夹数,用Item依次进行访问。
Type:文件夹类型,一般都是"File Folder",有些特殊的文件夹类型为"Folder"
Size:文件夹大小
Path:路径
ParentFolder:父文件夹路径
Name:文件夹名称,可写
ShortPath:返回8.3命名规则的短路径
ShortName:返回8.3命名规则的短文件夹名称
IsRootFolder:判断是否是根文件夹

五.File的方法和属性
Folder的方法有Copy,Delete,Move,OpenAsTextStream这些方法的用法分别参见FileSystemObject.CopyFile,FileSystemObject.DeleteFile,FileSystemObject.MoveFile,FileSystemObject.CreateTextFile方法。
Attributes:文件的属性.将返回下面数值的或值.
0:Normal
1:ReadOnly可设
2:Hidden可设
4:System可设
8:Volumn
16:Directory是否是文件夹
32:Achive即文件在上次备份后被改动过,可设
1024:Alias是否是链接或快捷方式
2048:Compressed是否被压缩

DateCreated:创建时间
DateLastAccessed:最后访问时间
DateLastModified:最后修改时间
Drive:文件所在的Driver letter
Type:文件类型,文件类型是根据文件的后缀来判断的,操作系统中储存有文件后缀和文件类型的对应关系,根据文件的后缀就能得到文件类型,如果有的后缀找不到给定的文件类型,就直接用后缀来表示文件类型,比如文件后缀为.yy。则文件类型为YY File。
Size:文件大小
Path:路径
ParentFolder:所在文件夹路径
Name:文件名称
ShortPath:返回8.3命名规则的短路径
ShortName:返回8.3命名规则的短文件名称


六.TextStream的方法和属性
方法
Close():关闭文本流
Read(charnum):读指定个数的字符
ReadAll():读整个文本
ReadLine():读一行
Skip(charnum):跳过指定个数的字符
SkipLine():跳过一行
Write(str):写入字符串
WriteBlankLines(linenum):写入指定个数的换行符
WriteLine(str):写入一行
属性
AtEndOfLine:判断是否行尾
AtEndOfStream:判断是否文本尾
Column:当前的列数
Line:当前的行数

七.使用用例
我们假象一下这样一个应用,访问某文件夹下所有文件和文件夹,获取其属性,并将之都改为只读的,最后将该文件夹改名为test.下面是改应用的实现。

var filesys = new ActiveXObject("Scripting.FileSystemObject");
var myfolder = filesys.GetFolder("C:\\jingle");
var myfile = filesys.CreateTextFile("c:\\jingle\\myfile.txt");
var fc = new Enumerator(myfolder.subFolders);
var obj;
for (; !fc.atEnd(); fc.moveNext())
{obj = filesys.GetFolder(fc.item());myfile.WriteLine(obj.Path);myfile.WriteLine(obj.Type);if(obj.Attributes & 2048){myfile.writeLine("压缩");}myfile.WriteBlankLines(2);obj.Attributes = obj.Attributes | 1;
}
fc = new Enumerator(myfolder.files);
for (; !fc.atEnd(); fc.moveNext())
{obj = filesys.GetFile(fc.item());myfile.WriteLine(obj.Path);myfile.WriteLine(obj.Type);if(obj.Attributes & 2048){myfile.writeLine("压缩");}myfile.WriteBlankLines(2);obj.Attributes = obj.Attributes | 1;
}
myfile.close();
myfolder.Name = "test"

 

 

转载于:https://www.cnblogs.com/studynote/archive/2013/03/28/2986341.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IBM如何拥抱Spark

Spark是目前相当火热的开源计算框架,相对于Hadoop,Spark优势是高性能和易用性。Spark的高性能源于其采用内存储存数据,应用可以以内存的速度进行运算;Spark的易用性在于通用的API,用户可以编写复杂的并行计算程序&…

SQL语句导入导出大全

SQL语句导入导出大全/******* 导出到excelEXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’ /*********** 导入ExcelSELECT * FROM OpenDataSource( ’Microsoft.Jet.OLEDB…

arcgis js 4.x 地图中加入图片

arcgis js 4.x版本,如何加入图片问题:如何将自定义图片放入到arcgis的图层当中?本人在网上查找的方法中,发现大部分方法只适用于3.x版本,只有一种引入自定义BaseDynamicLayer的方法可用,然而按照这种方式&a…

对你的的应用程序进行Debug

对你的的应用程序进行Debug 介绍如何使用Microsoft Visual Studio Code Name "Orcas" Beta 1对基于Silverlight的应用程序进行debugging .在Silverlight中debugging所使用的工具和技巧和其它的 Visual Studio projects是类似的. 想查看更多的关于debugging信息的, 查…

如果reporting server出现“无法安装打印控件”的处理方法。

1.打开"控制面板",选择"添加或删除程序"2.将显示更新更新打勾.3.查找文件"KB956391安装更新"4.卸载此文件即可打印了 转载于:https://www.cnblogs.com/miaomiaoga/archive/2008/12/02/1346319.html

在.Net如何制作自定义的快捷方式(转)

我们用.Net安装程序生成的快捷方式是这样的,如下图:该图中目标所对应的文本框是灰色的,并且下方的查找目标和更改图标两个按钮也是不可用。这样我们根本就没有办法更改这个快捷方式。假如这时有个客户需要在程序启动的时候传入一些参数&#…

大数据——Kafka学习笔记

具体代码可以参考: https://github.com/Ostrich5yw/java4BigData/tree/master/java4Kafka

ITOO高校云平台V3.1--项目总结(一)

高校云平台,可以说是我参加的的一个实战性的项目,刚开始接触,可以说是有点蒙,到真正的用到实践中去的时候才发现,之前学到的好多的知识,还只是依然处于学过的层次上,想要真正的运用到项目中去&a…

TABCTL32.OCX 文件

引用:http://zhidao.baidu.com/question/287980070.html 从网上下载TABCTL32.OCX解压缩后拷贝此文件到c:\windows\system32 点开始 运行 输入 regsvr32 TABCTL32.OCX 显示成功后就可以了。 地址: http://ishare.iask.sina.com.cn/f/7602536.html?fromli…

ASP.Net中控件的EnableViewState属性

在ASP.Net中对各个WebForm控件引入以前没有的EnableViewState属性。这个属性究竟有什么用。我们知道对于WebForm而言,其代码是在服务器端的,以处理客户端的请求。当用户通过浏览器浏览网页的时候,会对网页进行某些操作,比如打开新…

大数据——SparkCore学习笔记

Spark 一、Spark简介 Spark 是一种由 Scala 语言开发的快速、通用、可扩展的大数据分析引擎Spark Core 中提供了 Spark 最基础与最核心的功能Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL 或者 Apache Hive 版本的 SQL 方言&am…

如何用Mybatis分库分表

分库 在分库的时候 有时候为了方便 一些表需要存放所有库的信息,称为全局库。如:用户表存放所有的用户。 此时分库的思路 数据库分为全局库和业务库,其中业务库又分为N多个库,全局库只放个别表方便开发。 这个时候 就需要一个全局…

Kubernetes权威指南精彩段落

2019独角兽企业重金招聘Python工程师标准>>> 看到上述两段代码,你可能会有一种“开门复动竹, 疑是故人来”的感觉。的确,这段代码经笔者反复考证后认定:100%高仿kubernetes Controller Server中的代码。连传说中的谷歌大神也能cop…

常用文献管理软件使用经验

常用的文献管理软件有:Endnote、Biblioscape和Reference Manager。由于不知道哪个好用,我把三个都装上进行了对比。 一、首先是在Word中引用文献功能的比较。 Endnote是最方便的,工具条上的按键就可以把文献插入到Word中。Biblioscape也能与W…

IMP出现的ORA-01401错误可能和字符集有关(转载)

今天在论坛上,看到有一位朋友问 “我备份数据库后在其他的机器上再导入这个数据库,出现如下错误,并只能导 入部分数据。 IMP-00019: row rejected due to ORACLE error 1401 IMP-00003: ORACLE error 1401 encountered ORA-01401: inserted v…

QT中的pro文件

动态库pro设置VERSION 1.0.1901.0时,产生目标名字总会带数字1解决方法:CONFIG skip_target_version_ext设置输出路径 DESTDIR ./output静态链接 LIBS -L$$PWD/../../lib -lopencv_world320转载于:https://www.cnblogs.com/huanyinglvtuan/p/11280013…

大数据——SparkSQL学习笔记

Spark 一、SparkSQL简介 ​ Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为分布式SQL查询引擎(类似于Hive,为便于进行MapReduce操作而使用类SQL语句进行Spark操作&#xff09…

windows phone7资料整理

wp7资料库 http://msdn.microsoft.com/zh-cn/magazine/gg598932.aspx 开发指导视频: http://channel9.msdn.com/Series/Windows-Phone-7-Development-for-Absolute-Beginners 指导博客: http://www.jeffblankenburg.com/2010/09/30/31-days-of-windows-p…

远程连接 SuSE Linux 设置方法

作者:Flyingis 且不说远程连接的便利性,就是机房里那轰轰的高分贝就足以让你的耳膜形成习惯性振动,何况还需要集中精神工作呢,在网络带宽允许的情况下,还是选择远程吧。远程连接的客户端工具有很多,有商…

android获取控件宽度高度

前几天&#xff0c;在自定义控件的时候碰到个问题&#xff0c;就是在如何获取自定义控件的高宽。在自定义控件类的构造函数中&#xff0c;本来以为可以轻松获取&#xff0c;但事实不是这样。我测试了下面代码&#xff1a; 先是布局代码&#xff1a; <com.lml.getvalues.MyVi…