zoukankan      html  css  js  c++  java
  • 得到文件路径信息 TParse

    得到文件路径信息 TParse

    上面根据 DriveList 及 Drive 方法可以得到驱动信息信息

    • DriveList 需要 CDir 对像保存列表,CDir 中的每一个数据都是 TEntry 类型的,所以根据 TEntry 可以得到驱动器及文件的信息
    • Drive()方法根据传入的参数得到 TDriveInfo 信息,根据 TDriveInfo 可以得到 iDriveAtt,iMediaAtt,iType,iBattery 属性,
      在 sdk 中查询得到详细说明,进而得到驱动器信息
    • Volume() 方法可以得到 TVolumeInfo ,这个能得到驱动器的大小及可用空间,名字等信息(名字在模拟器上得不到,不知为什么)
    • 得到一个目录是否存在可以通过下面的代码实现
      TInt err=fsSession.MkDir(KMessage3);
       
      if (err!=KErrAlreadyExists)  // Don't leave if it already exists
        User::LeaveIfError(err);

    现在需要解析一个带有全路径的文件该怎么办?
    可以使用 TParse 对像,使用  Parse对像时,先要通过 Set 方法去赋于一个全路径的字符串,然后通过 FullName(),Drive(),Path(),Ext(),Name()
    分别得到 全名,所在驱动器名,路径,扩展名及名字

    请看以下示例

    void parseNames(const TDesC& aFileName);
    void fileNames()
    {
        _LIT(KFuncName,
    "\nDoParsing()\n");
        console
    ->Printf(KFuncName);
        _LIT(KParse1,
    "d:\\path\\fn.ext");
        parseNames(KParse1);
        _LIT(KParse2,
    "autoexec.bat");
        parseNames(KParse2);
        _LIT(KParse3,
    "c:readme");
        parseNames(KParse3);
        _LIT(KParse4,
    "c:\\include\\stdio.h");
        parseNames(KParse4);
        _LIT(KParse5,
    ".prof.ile");
        parseNames(KParse5);
        _LIT(KParse6,
    "autoexec.*");
        parseNames(KParse6);
    }
    void parseNames(const TDesC& aFileName)
    {
        User::LeaveIfError(ifs.Connect());
        _LIT(KFullName,
    "Full name=%S\n");
        _LIT(KPathComponents,
    "Dirve=%S path=%S name=%S ext=%S\n");
        _LIT(KFullNameText,
    "full name against session path=%S\n");
        _LIT(KExtension,
    ".txt");
        _LIT(KParsePath,
    "FullName against session path and default extension .txt=%S\n");
        TParse p;
        User::LeaveIfError(p.Set(aFileName,NULL,NULL));
        console
    ->Printf(KFullName,&p.FullName());
        TFileName driveName(p.Drive());
        TFileName pathname(p.Path());
        TFileName filename(p.Name());
        TFileName extension(p.Ext());
        console
    ->Printf(KPathComponents,&driveName,&pathname,
            
    &filename,&extension);
        User::LeaveIfError(ifs.Parse(aFileName,KExtension,p));
        console
    ->Printf(KParsePath,&(p.FullName()));
        ifs.Close();
    }

    示例代码来自于 sdk 例子,代码可是我一点点敲上去的



    安平2009@原创
    qi_jianzhou@126.com

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/zziss/p/1651157.html
Copyright © 2011-2022 走看看