从Objective-C中的特定位置读取特定的字节长度

时间:2011-12-29 07:19:30

标签: objective-c

我需要一次读取视频文件的字节为1MB块,并将该数据分配给字节流。并且在第二次开始读取字节时,它必须从上一次执行的结束点开始并读取1MB的字节。必须这样做,直到它读取文件的最后一个字节。我尝试使用以下代码,但似乎这个memcpy方法只支持从文件的开头读取1MB大小。

    //original size value is 1024*1024
    do{
        if((index+size) > fileSize){
            size = fileSize-index;
        }
        Byte *buff = (Byte*)malloc(size);
        memcpy(buff, [data2 bytes], size);

        //some logic goes here to pass the already read bytes

        index+=size;

    }while(index<fileSize);

任何人都可以帮我这样做吗?我是Objective-C和C相关语言的新手。 谢谢

2 个答案:

答案 0 :(得分:0)

如果你有memcpy的问题,请使用CopyMemory:

void CopyMemory(   __in PVOID目的地,   __in const VOID *来源,   __在SIZE_T长度 );

用法是相同的

你能解释一下你的问题吗?我没有明白你的意思?

此致

答案 1 :(得分:0)

当您读取文件时,文件指针会自动移动。看这个例子:

#include <windows.h>

int main()
{
    HANDLE hFile = CreateFile("c:\\a.txt",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

    DWORD read;
    BYTE buffer[0x400];

    do
    {
    ReadFile(hFile,buffer,0x400,&read,NULL);
    //process the data (buffer)
    }while(read);

    CloseHandle(hFile);
}