1 求助:关于symbian文件操作
我写的程序需要从一个文件中读取数据,那这个文件在我开发时应该放在什么地方呢?当开发好之后打包成sis上传到手机上时又放在什么地方呢?谢谢~~
答:
开发的时候可以放到仿真器的C盘下,例如对于支持CodeWarrior的SDK,在调试模式下仿真器的C盘是SDK安装目录的"/EPOC32/WINSCW/C/"子目录。
程序里引用的时候可以用绝对路径:
_LIT(KMyFile, "c://myfile.txt");
打包到手机上时可以放到C盘上也可以放到存储卡上,引用方式类似。
2 [求助]关于symbian文件操作
请问:在symbian系统下怎么使用Socket通信??谢谢!
答:
主要是用RSocketServ和RSocket这两个类,SDK里有例子:
“/Examples/networking/tcpip”
再请问一下,用Socket接收到从客户端传过来的数据流或者是文件流后,可以保存到本地的任意类型的文件吗?
比如:从客户端把下载下来的MP3文件以文件流的形式通过Socket传过来后(传给C++的另一个进程),我们可以以a.dt的文件名(类型)保存吗?
答:
可以保存成本地的任意类型的文件。
再有,您有没有做过用C++做XML的解析.在Symbian系统下,有没有相关的API吗?(在自带的SDK 中,我没有找到.更没有找到类似的例子)
或者,能不能提供一些网站呀.小弟再此谢过了.!
答:
XML解析,我用过NewLC上的Expat库:
http://newlc.com/mot.php3?id_mot=100
网站参见置顶文章。
*******************************************************************************
问:
读取文件路径的问题。
我在程序中读取一个txt文件,调试的时候我放在C:/Symbian/8.0a/S60_2nd_FP2_J/epoc32/wins/c
所以程序里文件路径就是“c://xxx.txt”
但向手机发布的时候发现,手机的c:不让发布文件。
只能放在e:上。
我考虑在调试时把这个文件放在C:/Symbian/8.0a/S60_2nd_FP2_J/epoc32/wins/E下,可是总是找不到文件。
请提示。。。。
答:
可以用编译宏:
#if defined(_DEBUG)
_LIT(KMyFileName, "c://xxx.txt");
#else
_LIT(KMyFileName, "e://xxx.txt");
#endif
这样在调试时用的是c盘上的文件,在发布时用的是e盘上的文件.
这是个解决的方法。
可是能不能在/epoc32/wins/E下面呢?
在Epoc32/wins下建一下名为E的文件夹不行吗?
楼上的,手工建的文件夹不行阿~
Developer Library > Tools and Utilities > Emulator > Emulator configuration > How to configure virtual drives
按上面SDK帮助上说的可以为仿真器映射新盘符:
打开SDK根目录下的“/Epoc32/Data/epoc.ini”文件,能看见:
_EPOC_DRIVE_D /Symbian/8.0a/S60_2nd_FP2_CW/epoc32/wins/d
_EPOC_LocDrv_1 E:
把第二行替换成:
_EPOC_DRIVE_E /Symbian/8.0a/S60_2nd_FP2_CW/epoc32/wins/e
我这样测试了一下:
1. 在SDK楼目录下新建如下子目录"/Epoc32/wins/e",然后在这个子目录下新建一个空文件a.txt
2. 新建了一个应用程序,调用如下代码删除e盘上的a.txt文件
_LIT(KTest, "e://a.txt");
EikFileUtils::DeleteFile(KTest());
3. 运行后成功删除,说明e盘可用。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
大家好,
我最近在尝试从文本文件里读取数据, 并显示在控制台上。 但是现实的时候屏幕上总是出现错误信息“leave code = -12“。我查到这个错误信息是”找不到指定路径”, 使我感到很奇怪。我基本上按照symbian说明上的方法写了代码,也尝试了所有可能的路径表达方法, 但是这个问题始终解决不了。我想知道是不是问题出在我的路径表达方式有问题? 还是读取数据之前要进行其它的设置工作?希望大家帮忙解答, 谢谢。
程序如下:
_LIT(KMyFile,"c://....//....//terrain.txt");
RFs iFs;
User::LeaveIfError(iFs.Connect());
RFile myFile;
RFileReadStream iStrFile(myFile);
User::LeaveIfError(iStrFile.Open(iFs, KMyFile, EFileRead));
........
biyu
View Public Profile
Find all posts by biyu
#2 Re: 问题:打开和读取txt文件的问题, 希望大家帮忙 - 2009-04-01, 17:00
Join Date: Jul 2007
Posts: 4,070
Location: ShenZhen, China
qxiaoyuan
Offline
Forum Nokia Champion
你的KMyFile的实际值是什么, 不会你的代码真的写成"c://....//....//terrain.txt"吧, 这个路径肯定是错的,
要写成你的实际路径,
假设文件是在c盘根目录, 那么写成
_LIT(KMyFile,"c://terrain.txt");
同理, 假设在c:/data目录下, 那么写成
_LIT(KMyFile,"c://Data//terrain.txt");
ps. 如果你是指模拟器, 那么对应的c盘根目录是在 "%Epoc32%/winscw/c"这样与你sdk相对应的目录下, 如"C:/Symbian/9.2/S60_3rd_FP1/Epoc32/winscw/c"
----------------------------
坚持学习, 坚持编码
http://www.devdiv.net/
qxiaoyuan
qxiaoyuan
View Public Profile
Find all posts by qxiaoyuan
#3 Re: 问题:打开和读取txt文件的问题, 希望大家帮忙 - 2009-04-01, 18:56
Join Date: Feb 2009
Posts: 4biyu
Offline
Registered User
谢谢你的回复, 问题已经解决了~~。问题出现在我没有把文件放到C:/Symbian/9.2/S60_3rd_FP1/Epoc32/winscw/c"路径下,而是放在自己的目录下了。 之前不太清楚模拟器文件是从这个路径下提取的。 还需要继续努力啊~~谢谢大家了
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
case EHelloWorldBasicCommand2:
{
RFs fsSession;
RFile rFile;
// Connects a client process to the fileserver
User::LeaveIfError(fsSession.Connect());
CleanupClosePushL(fsSession);
//Open file where the stream text is
User::LeaveIfError(rFile.Open(fsSession,KHelloFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText));
CleanupClosePushL(rFile);
// copy stream from file to RFileStream object
RFileReadStream inputFileStream(rFile);
CleanupClosePushL(inputFileStream);
// HBufC descriptor is created from the RFileStream object.
HBufC* fileData = HBufC::NewLC(inputFileStream, 321);
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
// Show the information Note
informationNote->ExecuteLD( *fileData );
// Pop loaded resources from the cleanup stack
CleanupStack::PopAndDestroy(4); // filedata, inputFileStream, rFile, fsSession
fsSession.Close();
}
break;按照以上方法,S60 SDK 3.0中helloworldbasic例程可以显示长字串。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
一
装一个软件说是需要用ginstall代替install,谁知道怎么弄?
答:把 Makefile里的install改成了/usr/ucb/install
怎样恢复刚刚删除的文件(已经清空回收站)
找回误删并清除了回收站的文档
步骤:
1、单击“开始——运行,然后输入regedit (打开注册表)
2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建”
,选择:“主键”,把它命名为“645FFO40——5081——101B——9F08——00AA002F954E”
再把右边的“默认”的主键的键值设为“回收站”,然后退出注册表。就OK啦。
3、要重启你的计算机。
只要你机器没有运行过磁盘整理。系统完好.任何时候的文件都可以找回来。
二
<head>里加上
<base href=" http://<?php echo $_SERVER['SERVER_NAME'].Yii::app()->baseUrl;?>/" />
就可以写相对路径了 images/xx
yii打开url转换后