您的位置:首页 > 其它

文件应该存储在手机的什么地方?

2004-12-23 16:33 531 查看
文件应该存储在手机的什么地方?
我需要把一个文件存在手机里,pkg文件这样写的:
"/Symbian/6.1/Series60/epoc32/release/wins/UDEB/Z/SYSTEM/DATA/data.dat"-"!:/system/apps/test/data.DAT"

在模拟器中运行时,程序里读入绝对路径:
z://system//data//data.DAT
在手机里运行时,程序读入路径为:
e://system//apps//test//data.DAT

在模拟器上运行正常,安装在手机的卡上,运行不了,不知道为什么

这个路径可以写死也可以运行时获得:
方法一:

code:
_LIT(KBitmapFilename, "c://system//apps//test//xxx.mbm");
const TUint16 KMMCDriveLetter = 'e';
const TUint16 KROMDriveLetter = 'z';
// try 3 locations - application directory in C,E (memory card), and Z drive
TFileName imageLocation(KBitmapFilename);
TInt loadErr = iImageFlag->Load(imageLocation,useFullScreen);
// not found on C, try E & Z
if(loadErr != KErrNone)
{
imageLocation[0] = KMMCDriveLetter;
loadErr = iImageFlag->Load(imageLocation,useFullScreen);
if(loadErr != KErrNone)
{
imageLocation[0] = KROMDriveLetter; // in emulator, apps usually reside on z
loadErr = iImageFlag->Load(imageLocation,useFullScreen);
}
}


方法二:

code:
void GetFullPathName(TDes& aFileName)
{
// Get default drive and path
TParse parse;
TFileName appPath;
TBuf<5>	  appDrive;
parse.Set(CEikonEnv::Static()->EikAppUi()->Application()->AppFullName(), NULL, NULL);
appPath.Copy(parse.DriveAndPath());
appDrive.Copy(parse.Drive());

// Parse the file name
parse.Set(aFileName, NULL, NULL);
if (parse.Drive().Length() == 0)
{
if (parse.Path().Length() == 0)
{ // Use default path and drive
aFileName.Insert(0, appPath);
}
else
{ // Use default drive
aFileName.Insert(0, appDrive);
}
}
}


Regards
Maxying

为了增强程序的可移植性,还是不要用绝对路径的好。我们可以在操作前获取当前设备的存储器路径。

例如:
根目录:
PathInfo::PhoneMemoryRootPath()
存储图片文件目录:
PathInfo::ImagesPath()
存储安装SIS文件目录:
PathInfo::InstallsPath()
存储声音文件目录:
PathInfo::SoundsPath()

如果想要定位MMC卡这种外加的存储器应该这样:

#include <PathInfo.h>
TFileName path = PathInfo::MemoryCardRootPath();

r60600

PathInfo这个类是在S60 2.0平台的,楼主的Symbian 6.1也就是S60 1.0平台用不了的!

Regards
Maxying
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: