Esempio n. 1
0
        public override void SetLength(long value)
        {
            if (safeHandle.IsClosed)
            {
                throw new ObjectDisposedException("Stream has been closed");
            }

            if (CanSeek == false)
            {
                throw new NotSupportedException("The stream does not support seeking");
            }

            if (CanWrite == false)
            {
                throw new NotSupportedException("The stream does not support writing");
            }

            if (value < 0)
            {
                throw new ArgumentOutOfRangeException("value is less than 0");
            }

            FlushBuffer();

            MonoIOError error;

            MonoIO.SetLength(safeHandle, value, out error);
            if (error != MonoIOError.ERROR_SUCCESS)
            {
                // don't leak the path information for isolated storage
                throw MonoIO.GetException(GetSecureFileName(name), error);
            }

            if (Position > value)
            {
                Position = value;
            }
        }