stdstream.cs
来自「没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没」· CS 代码 · 共 179 行
CS
179 行
/* * StdStream.cs - Implementation of the "System.Private.StdStream" class. * * Copyright (C) 2002 Southern Storm Software, Pty Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */namespace System.Private{#if !CONFIG_SMALL_CONSOLEusing System;using System.IO;using Platform;// This class differs from "StdReader" and "StdWriter"// in that it manipulates binary data, not textual.// It is provided to support "Console.OpenStandard*".internal sealed class StdStream : Stream{ // Local state. private int fd; // Constructor. public StdStream(int fd) { this.fd = fd; } // Close this stream. public override void Close() { if(fd != -1) { Stdio.StdClose(fd); fd = -1; } } // Flush this stream. public override void Flush() { if(fd != -1) { Stdio.StdFlush(fd); } } // Read data from this stream. public override int Read(byte[] buffer, int offset, int count) { ValidateBuffer(buffer, offset, count); if(fd == 0) { return Stdio.StdRead(fd, buffer, offset, count); } else if(fd != -1) { throw new NotSupportedException (_("IO_NotSupp_Read")); } else { throw new ObjectDisposedException(_("IO_StreamClosed")); } } // Seek to a new position within this stream. public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException (_("IO_NotSupp_Seek")); } // Set the length of this stream. public override void SetLength(long value) { throw new NotSupportedException (_("IO_NotSupp_SetLength")); } // Write data to this stream. public override void Write(byte[] buffer, int offset, int count) { ValidateBuffer(buffer, offset, count); if(fd == 1 || fd == 2) { Stdio.StdWrite(fd, buffer, offset, count); } else if(fd != -1) { throw new NotSupportedException (_("IO_NotSupp_Write")); } else { throw new ObjectDisposedException(_("IO_StreamClosed")); } } // Stream properties. public override bool CanRead { get { return (fd == 0); } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return (fd == 1 || fd == 2); } } public override long Length { get { throw new NotSupportedException (_("IO_NotSupp_Seek")); } } public override long Position { get { if(fd != -1) { throw new NotSupportedException (_("IO_NotSupp_Seek")); } else { throw new ObjectDisposedException(_("IO_StreamClosed")); } } set { if(fd != -1) { throw new NotSupportedException (_("IO_NotSupp_Seek")); } else { throw new ObjectDisposedException(_("IO_StreamClosed")); } } }}; // class StdStream#endif // !CONFIG_SMALL_CONSOLE}; // namespace System.Private
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?