Есть ли C # эквивалент для StreamWriter в C ++ ostream :: tellp? Я портирую какой-то старый код C ++ на C #, но клиент по-прежнему хочет продолжать использовать дискеты (читай: старое оборудование), поэтому мне нужно найти способ найти позицию указателя файла или узнать, сколько я написал в диск уже.
Ниже приведен метод, который я создал до сих пор:
private bool isDisketteBoundary(ref StreamWriter swOutput, int nCurrentDisketteNo) {
// Get current file pointer position
// long filePosition = nOStream.tellp(); <-- C++ code
long filePosition = 0; // <-- needs to change to find file pointer position
// Valid?
if(filePosition != -1) {
// Is the new size over a boundary?
float numDiskettes = (float)((float)filePosition / (float)Constants.DisketteSize);
int disketteCount = Convert.ToInt32(Math.Ceiling(numDiskettes));
// Is the diskette count larger than the current index?
return (nCurrentDisketteNo < disketteCount) ? true : false;
}
else {
throw new Exception("Unable to get file pointer from StreamWriter");
}
}
Я думаю, что вы ищете
swOutput.BaseStream.Position
см MSDN: http://msdn.microsoft.com/en-us/library/system.io.stream.position.aspx .
Других решений пока нет …