zoukankan      html  css  js  c++  java
  • FileSystemObject (FSO)对象方法总结及应用

    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"


    作者:Jingle Guo
    出处:http://www.cnblogs.com/studynote/
    若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
     

    C++

     
    摘要: MSMQ能够通过MQGetMachineProperties 获取本机或其他机器的的公共密钥,site list,path name等信息。这里需要注意的就是如果PROPID_QM_ENCRYPTION_PK和PROPID_QM_ENCRYPTION_PK_BASE同时存在,将有一个属性不能成功获取。而MS推荐使用的是PROPID_QM_ENCRYPTION_PK_BASE参数,所以就当PROPID_QM_ENCRYPTION_PK不存在吧。不多说,上代码。void GetMachineProp(){ const int NUMBEROFPROPERTIES = 8; QMPROPID aPr阅读全文
    posted @ 2013-03-26 15:19 Jingle Guo 阅读(4) | 评论 (0) 编辑
     
    摘要: 1.前言应用程序创建的Queue根据你是否希望被其他程序找到可分为Public Queue和Private Queue,Public Queue会在directory service中注册,有利于长时间的使用。Private Queue在本机注册,而不在directory service中注册,它一般通过在%windir%\System32\MSMQ\Storage\Lqs下存储相应的描叙文件来注册。注册在本机中的Public Queue也会在Lqs目录下存储相应的描述文件。建立Private Queue更快,能在directory service不工作的时候正常工作。另外按照可以接收的Mes阅读全文
    posted @ 2013-03-26 14:49 Jingle Guo 阅读(14) | 评论 (0) 编辑
     
    摘要: 一.PKI的作用公钥加密也叫做非对称加密,它用一对密钥来进行加密和解密,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。在用户使用公钥加密时并不能确定使用的公钥的可信性,Public Key Infrastructure就是通过引入一个可信的第三方certification authority(CA)来确保公钥的完整性和持有人的身份。二.X.509PKI的结构X.509 public key infrastructure标准的结构如下-阅读全文
    posted @ 2013-03-22 15:51 Jingle Guo 阅读(59) | 评论 (0) 编辑
     
    摘要: 1.MSMQ是什么?Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。(来源:百度百科)2.MSMQ的好处比起TCP/IP通讯,我觉得MSMQ的好处在能支持两个应用程序之间的离线通讯,接收方和发送方不需要同时运行,发送方可以先把消息发出来,过一阅读全文
    posted @ 2013-03-18 20:46 Jingle Guo 阅读(97) | 评论 (1) 编辑
    分类: ActiveX
  • 相关阅读:
    JAVA网络编程入门
    悲观锁和乐观锁
    原子性---Atomic
    volatile关键字
    leetcode_111. 二叉树的最小深度
    leetcode_110. 平衡二叉树
    leetcode_108. 将有序数组转换为二叉搜索树
    leetcode_107. 二叉树的层次遍历 II
    leetcode_104. 二叉树的最大深度
    leetcode_101. 对称二叉树
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2987700.html
Copyright © 2011-2022 走看看