所以,我使用ReadFile
fromkernel32
来读取文件。SetFilePointer
这是我在和的帮助下读取文件的代码ReadFile
。
public long ReadFileMe(IntPtr filehandle, int startpos, int length, byte[] outdata)
{
IntPtr filea = IntPtr.Zero;
long ntruelen = GetFileSize(filehandle, filea);
int nRequestStart;
uint nRequestLen;
uint nApproxLength;
int a = 0;
if (ntruelen <= -1)
{
return -1;
}
else if (ntruelen == 0)
{
return -2;
}
if (startpos > ntruelen)
{
return -3;
}
else if (length <= 0)
{
return -5;
}
else if (length > ntruelen)
{
return -6;
}
else
{
nRequestStart = startpos;
nRequestLen = (uint)length;
outdata = new byte[nRequestLen - 1];
SetFilePointer(filehandle, (nRequestStart - 1), ref a, 0);
ReadFile(filehandle, outdata, nRequestLen, out nApproxLength, IntPtr.Zero);
return nApproxLength; //just for telling how many bytes are read in this function
}
}
当我使用这个函数时,它可以工作(用于另一个目的),所以这个代码已经过测试并且可以工作。
但主要问题是,我现在需要将outdata
函数放入字节的参数转换为string
.
我尝试使用Encoding.Unicode
等(所有UTF),但它不起作用。