1

C++ ostream::tellp の StreamWriter に相当する C# はありますか? 私はいくつかの古い 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");
      }
 }
4

1 に答える 1

2

私はあなたが探していると思います

swOutput.BaseStream.Position

MSDN: http://msdn.microsoft.com/en-us/library/system.io.stream.position.aspxを参照してください。

于 2012-11-29T14:53:42.963 に答える