(转)MTK文件操作常用函数
来源:互联网 发布:mysql 修改端口号 编辑:程序博客网 时间:2024/06/10 22:20
该函数用来打开一个文件,FielName为文件路径及文件名,Flag为文件的操作属性,其值可为FS_READ_WRITE,FS_READ_ONLY,FS_OPEN_SHARED等。如果文件打开成功,该函数返回一个大于等于0的值,否则返回一个小于0的值。具体操作方法可如下:
FS_HANDLE h;
if((h = (FS_HANDLE)FS_Open((constWCHAR*)filename, FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE))>= 0)
{
}
注意,这里的路径要转换成Unicode字符串,可以通过AnsiiToUnicodeString(S8 *pOutBuffer, S8 * pInBuffer)函数来实现。比如我们在D盘的example文件夹下有一个test.c文件需要对其进行修改(D:\example\test.c),则:
FS_HANDLE h;
S8 UnicodeName[100];
AnsiiToUnicodeString((S8*) UnicodeName,(S8 *)” D:\\example\\test.c”);
if((h = (FS_HANDLE)FS_Open((constWCHAR *) UnicodeName, FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE))>= 0)
}
也可使用FS_Open((const WCHAR *) L”D:\\example\\test.c”,FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE)方式打开。
当对文件修改完成后,要使用函数FS_Close()将其关闭。
2.
用来关闭一个已经打开的文件。
3.
该函数用来将文件中的内容读取到一个DataPtr指向的缓冲区中,FileHandle为已打开文件的句柄,Length为要读取的字节数,参数*Read为实际读取到的字节数。在下面的例子中,我们将从前面打开的文件中读取100个字节(假设有)的数据到数组buf[]中:
FS_HANDLE h;
UINT read;
S8 buf[256];
S8UnicodeName[100];
memset(buf, 0,sizeof(buf));
AnsiiToUnicodeString((S8*) UnicodeName,(S8 *)” D:\\example\\test.c”);
if((h = (FS_HANDLE)FS_Open((const WCHAR *)UnicodeName, FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE))>= 0)
}
4.
该函数用来将指针DataPtr指向的缓冲区数据写到文件中去,Length为要写入的数据的字节数,*Written值为实际写入的字节数,如下:
UINT len, written;
FS_Write(h,(void*)buf,len,&written);
5.
该函数用来将缓冲区中还没有写入到文件中的数据写入进文件中去,一般在FS_Write写完文件后用此函数来确保数据都被写进去。
6.
该函数用来将文件指针指向某个位置,Whence的取值有FS_FILE_BEGIN、FS_FILE_CURRENT和FS_FILE_END。比如可用如下方法将文件指向末尾部分,FS_Seek(h,0,FS_FILE_END);然后可在文件末尾追加写入数据。Offset为文件指针的偏移,例如FS_Seek(h,-5,FS_FILE_CURRENT)将文件指针向前移5个字节,如果是向后移5个字节的话则offset值为5。
7.
该函数返回文件的大小(即字节数);
8.
该函数用来删除一个文件。
下面,我们用一个实例将以上几个函数联系起来使用。实例具体为:将一个文件中的内容(假定不多于5000个字节)全部读出来然后再追加到它自己的末尾,即将文件的内容copy一遍到它本身,如下:
FS_HANDLE h;
UINT read, written, size;
static S8 buf[5000];
S8 UnicodeName[100];
memset(buf, 0, sizeof(buf));
AnsiiToUnicodeString((S8 *)UnicodeName,(S8 *)” D:\\example\\test.c”);
if((h = (FS_HANDLE)FS_Open((constWCHAR *)UnicodeName, FS_READ_WRITE|FS_OPEN_SHARED|FS_CREATE))>= 0)
{
}
这里的FS_Read(FS_Write)在操作的时候一般会将指定大小的数据读(写)出来,但这并不能保证一定做的到,所以,比较合理的做法是读写完后判断size和read(written)的大小,如果read(written)小于size,则要将剩下的内容再继续读写。
另外,由于系统分配给函数执行的栈空间不是足够大,所以,如果这里的buf比较大的话要声明成static,不然会栈越界的,而静态(static)型则不占用栈空间。
- (转)MTK文件操作常用函数
- MTK文件操作常用函数
- MTK文件操作常用函数
- MTK文件操作常用函数
- MTK文件操作函数
- MTK常用Trace函数(转)
- MTK常用函数
- mtk常用函数
- android mtk 常用操作命令
- 常用文件操作功能函数
- C文件操作常用函数
- Delphi文件操作常用函数
- PYTHON文件操作常用函数
- PHP 文件操作常用函数
- Linux文件操作常用函数
- php 常用文件操作函数
- PHP 文件操作常用函数
- C 常用文件操作函数
- 深度学习数据集准备:使用photoshop 批处理图像数据
- (转)Perl的简单语法(与C语言语法…
- linux信号量
- ubable to locate package java
- (转)Perl的简单语法(与C语言语法…
- (转)MTK文件操作常用函数
- MTK_面试的几个主要问题
- (转)MTk屏幕切换效果的制作
- MTK的铃声修改与替换
- 转载 MTK存储系统相关
- (转)同步/异步与阻塞/非阻塞的区别
- 关于人生规划选择的一个哲理故事
- java集合框架的讲解
- MTK异常LOG深入探讨