关于API函数写入文件,有没有类似于append的功能的?
说起来也很让人郁闷。好不容易折腾一下,发现API函数中没有一个类似于Append的功能。
FileStream vFileStream = File.Open(@"C:\Documents and Settings\Administrator\桌面\a.txt", FileMode.Open);
vFileStream.Seek(0, SeekOrigin.Begin);
SECURITY_ATTRIBUTES _SECURITY_ATTRIBUTES=new SECURITY_ATTRIBUTES();
OVERLAPPED _OVERLAPPED=new OVERLAPPED();
// OFSTRUCT _offstruct=new OFSTRUCT();
IntPtr vDesHelder = Kernel.CreateFile(@"c:\a.txt", Kernel.GENERIC_WRITE | Kernel.GENERIC_READ, 0, ref _SECURITY_ATTRIBUTES, Kernel.OPEN_ALWAYS, 0, IntPtr.Zero);
//IntPtr vDesHelder = Kernel.OpenFile(@"c:\a.txt", ref _offstruct, Kernel.OF_READWRITE);
byte[] buffer=new byte[4029];
int reader = 0;
int lBytesWritten = 0;
int lpDistanceToMoveHigh = 0;
while ((reader = vFileStream.Read(buffer,0, buffer.Length)) > 0)
{
// Console.WriteLine(Kernel.SetFilePointer(vDesHelder, writePosition, ref writePosition, 0));
int isuccess = Kernel.WriteFile(vDesHelder, buffer, reader, ref lBytesWritten, ref _OVERLAPPED);
}
Kernel.FlushFileBuffers(vDesHelder);
Kernel.CloseHandle(vDesHelder);
vFileStream.Close();
}
让人郁闷的就是WriteFile这个函数,一直没弄明白nNumberOfBytesToWrite字段的意思。另外我设置了读写位置,还是没有效果。每次都会覆盖前面写入的内容。不知道还没有另外的函数?有了解的朋友希望帮助一下。谢谢!