亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? inflaterinputstream.cs

?? 基于.net的c#壓縮程序
?? CS
?? 第 1 頁 / 共 2 頁
字號:
		/// <summary>
		/// Decompressor for this stream
		/// </summary>
		protected Inflater inf;

		/// <summary>
		/// <see cref="InflaterInputBuffer">Input buffer</see> for this stream.
		/// </summary>
		protected InflaterInputBuffer inputBuffer;

		/// <summary>
		/// Base stream the inflater reads from.
		/// </summary>
		protected Stream baseInputStream;
		
		/// <summary>
		/// The compressed size
		/// </summary>
		protected long csize;

		bool isClosed = false;
		bool isStreamOwner = true;
		
		/// <summary>
		/// Get/set flag indicating ownership of underlying stream.
		/// When the flag is true <see cref="Close"/> will close the underlying stream also.
		/// </summary>
		/// <remarks>
		/// The default value is true.
		/// </remarks>
		public bool IsStreamOwner
		{
			get { return isStreamOwner; }
			set { isStreamOwner = value; }
		}
		
		/// <summary>
		/// Gets a value indicating whether the current stream supports reading
		/// </summary>
		public override bool CanRead {
			get {
				return baseInputStream.CanRead;
			}
		}
		
		/// <summary>
		/// Gets a value of false indicating seeking is not supported for this stream.
		/// </summary>
		public override bool CanSeek {
			get {
				return false;
			}
		}
		
		/// <summary>
		/// Gets a value of false indicating that this stream is not writeable.
		/// </summary>
		public override bool CanWrite {
			get {
				return false;
			}
		}
		
		/// <summary>
		/// A value representing the length of the stream in bytes.
		/// </summary>
		public override long Length {
			get {
				return inputBuffer.RawLength;
			}
		}
		
		/// <summary>
		/// The current position within the stream.
		/// Throws a NotSupportedException when attempting to set the position
		/// </summary>
		/// <exception cref="NotSupportedException">Attempting to set the position</exception>
		public override long Position {
			get {
				return baseInputStream.Position;
			}
			set {
				throw new NotSupportedException("InflaterInputStream Position not supported");
			}
		}
		
		/// <summary>
		/// Flushes the baseInputStream
		/// </summary>
		public override void Flush()
		{
			baseInputStream.Flush();
		}
		
		/// <summary>
		/// Sets the position within the current stream
		/// Always throws a NotSupportedException
		/// </summary>
		/// <exception cref="NotSupportedException">Any access</exception>
		public override long Seek(long offset, SeekOrigin origin)
		{
			throw new NotSupportedException("Seek not supported");
		}
		
		/// <summary>
		/// Set the length of the current stream
		/// Always throws a NotSupportedException
		/// </summary>
		/// <exception cref="NotSupportedException">Any access</exception>
		public override void SetLength(long val)
		{
			throw new NotSupportedException("InflaterInputStream SetLength not supported");
		}
		
		/// <summary>
		/// Writes a sequence of bytes to stream and advances the current position
		/// This method always throws a NotSupportedException
		/// </summary>
		/// <exception cref="NotSupportedException">Any access</exception>
		public override void Write(byte[] array, int offset, int count)
		{
			throw new NotSupportedException("InflaterInputStream Write not supported");
		}
		
		/// <summary>
		/// Writes one byte to the current stream and advances the current position
		/// Always throws a NotSupportedException
		/// </summary>
		/// <exception cref="NotSupportedException">Any access</exception>
		public override void WriteByte(byte val)
		{
			throw new NotSupportedException("InflaterInputStream WriteByte not supported");
		}
		
		/// <summary>
		/// Entry point to begin an asynchronous write.  Always throws a NotSupportedException.
		/// </summary>
		/// <param name="buffer">The buffer to write data from</param>
		/// <param name="offset">Offset of first byte to write</param>
		/// <param name="count">The maximum number of bytes to write</param>
		/// <param name="callback">The method to be called when the asynchronous write operation is completed</param>
		/// <param name="state">A user-provided object that distinguishes this particular asynchronous write request from other requests</param>
		/// <returns>An <see cref="System.IAsyncResult">IAsyncResult</see> that references the asynchronous write</returns>
		/// <exception cref="NotSupportedException">Any access</exception>
		public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
		{
			throw new NotSupportedException("InflaterInputStream BeginWrite not supported");
		}
		
		/// <summary>
		/// Create an InflaterInputStream with the default decompressor
		/// and a default buffer size of 4KB.
		/// </summary>
		/// <param name = "baseInputStream">
		/// The InputStream to read bytes from
		/// </param>
		public InflaterInputStream(Stream baseInputStream) : this(baseInputStream, new Inflater(), 4096)
		{
		}
		
		/// <summary>
		/// Create an InflaterInputStream with the specified decompressor
		/// and a default buffer size of 4KB.
		/// </summary>
		/// <param name = "baseInputStream">
		/// The source of input data
		/// </param>
		/// <param name = "inf">
		/// The decompressor used to decompress data read from baseInputStream
		/// </param>
		public InflaterInputStream(Stream baseInputStream, Inflater inf) : this(baseInputStream, inf, 4096)
		{
		}
		
		/// <summary>
		/// Create an InflaterInputStream with the specified decompressor
		/// and the specified buffer size.
		/// </summary>
		/// <param name = "baseInputStream">
		/// The InputStream to read bytes from
		/// </param>
		/// <param name = "inflater">
		/// The decompressor to use
		/// </param>
		/// <param name = "bufferSize">
		/// Size of the buffer to use
		/// </param>
		public InflaterInputStream(Stream baseInputStream, Inflater inflater, int bufferSize)
		{
			if (baseInputStream == null) {
				throw new ArgumentNullException("InflaterInputStream baseInputStream is null");
			}
			
			if (inflater == null) {
				throw new ArgumentNullException("InflaterInputStream Inflater is null");
			}
			
			if (bufferSize <= 0) {
				throw new ArgumentOutOfRangeException("bufferSize");
			}
			
			this.baseInputStream = baseInputStream;
			this.inf = inflater;
			
			inputBuffer = new InflaterInputBuffer(baseInputStream);
		}
		
		/// <summary>
		/// Returns 0 once the end of the stream (EOF) has been reached.
		/// Otherwise returns 1.
		/// </summary>
		public virtual int Available {
			get {
				return inf.IsFinished ? 0 : 1;
			}
		}
		
		/// <summary>
		/// Closes the input stream.  When <see cref="IsStreamOwner"></see>
		/// is true the underlying stream is also closed.
		/// </summary>
		public override void Close()
		{
			if ( !isClosed ) {
				isClosed = true;
				if ( isStreamOwner) {
					baseInputStream.Close();
				}
			}
		}

		/// <summary>
		/// Fills the buffer with more data to decompress.
		/// </summary>
		/// <exception cref="SharpZipBaseException">
		/// Stream ends early
		/// </exception>
		protected void Fill()
		{
			inputBuffer.Fill();
			inputBuffer.SetInflaterInput(inf);
		}

		/// <summary>
		/// Decompresses data into the byte array
		/// </summary>
		/// <param name ="b">
		/// The array to read and decompress data into
		/// </param>
		/// <param name ="off">
		/// The offset indicating where the data should be placed
		/// </param>
		/// <param name ="len">
		/// The number of bytes to decompress
		/// </param>
		/// <returns>The number of bytes read.  Zero signals the end of stream</returns>
		/// <exception cref="SharpZipBaseException">
		/// Inflater needs a dictionary
		/// </exception>
		public override int Read(byte[] b, int off, int len)
		{
			for (;;) {
				int count;
				try {
					count = inf.Inflate(b, off, len);
				} catch (Exception e) {
					throw new SharpZipBaseException(e.ToString());
				}
				
				if (count > 0) {
					return count;
				}
				
				if (inf.IsNeedingDictionary) {
					throw new SharpZipBaseException("Need a dictionary");
				} else if (inf.IsFinished) {
					return 0;
				} else if (inf.IsNeedingInput) {
					Fill();
				} else {
					throw new InvalidOperationException("Don't know what to do");
				}
			}
		}
		
		/// <summary>
		/// Skip specified number of bytes of uncompressed data
		/// </summary>
		/// <param name ="n">
		/// Number of bytes to skip
		/// </param>
		/// <returns>
		/// The number of bytes skipped, zero if the end of 
		/// stream has been reached
		/// </returns>
		/// <exception cref="ArgumentOutOfRangeException">
		/// Number of bytes to skip is zero or less
		/// </exception>
		public long Skip(long n)
		{
			if (n <= 0) {
				throw new ArgumentOutOfRangeException("n");
			}
			
			// v0.80 Skip by seeking if underlying stream supports it...
			if (baseInputStream.CanSeek) {
				baseInputStream.Seek(n, SeekOrigin.Current);
				return n;
			} else {
				int len = 2048;
				if (n < len) {
					len = (int) n;
				}
				byte[] tmp = new byte[len];
				return (long)baseInputStream.Read(tmp, 0, tmp.Length);
			}
		}
		
		/// <summary>
		/// Clear any cryptographic state.
		/// </summary>		
		protected void StopDecrypting()
		{
			inputBuffer.CryptoTransform = null;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久精k8| 精品电影一区二区三区| 亚洲国产一区视频| 欧美日韩精品一区二区| 日本欧美一区二区三区乱码| 欧美一级片在线| 精品无码三级在线观看视频 | 中文字幕一区二区三区色视频| 懂色av中文一区二区三区 | 777久久久精品| 久久66热re国产| 国产精品美女久久久久久| 97精品久久久久中文字幕| 亚洲高清免费在线| 日韩精品资源二区在线| 9i看片成人免费高清| 亚洲444eee在线观看| 亚洲精品在线网站| 91网址在线看| 美腿丝袜亚洲综合| 国产精品女上位| 欧美剧情片在线观看| 国产99精品在线观看| 亚洲第一二三四区| 欧美精品一区二区三区视频| 一本色道久久综合精品竹菊| 麻豆国产一区二区| 亚洲日穴在线视频| 欧美大尺度电影在线| 色一区在线观看| 经典三级在线一区| 亚洲高清久久久| 国产欧美日韩不卡| 欧美精品久久99| 成人国产精品免费观看动漫| 丝袜美腿亚洲综合| 亚洲欧美电影一区二区| 欧美mv日韩mv| 欧美吞精做爰啪啪高潮| 成人午夜大片免费观看| 热久久国产精品| 有坂深雪av一区二区精品| 久久久精品欧美丰满| 欧美丰满一区二区免费视频| 91美女在线视频| 国产91在线观看| 精品无人区卡一卡二卡三乱码免费卡 | 在线免费观看成人短视频| 国产在线播放一区三区四| 天天影视网天天综合色在线播放| 国产精品久线观看视频| 亚洲精品一区二区精华| 日韩视频在线你懂得| 色噜噜狠狠色综合中国| 国产精品亚洲成人| 久久精品99国产精品| 亚洲成人自拍偷拍| 亚洲精品高清视频在线观看| 中文字幕一区二区在线播放| 日本一区二区免费在线观看视频| 日韩欧美一二三四区| 51精品国自产在线| 欧美二区乱c少妇| 欧美性大战久久久久久久蜜臀 | 精品一二三四区| 天使萌一区二区三区免费观看| 夜夜亚洲天天久久| 一区二区三区四区在线| 日韩美女视频一区二区| 综合久久久久久久| 成人欧美一区二区三区白人| 国产精品久久久久一区二区三区共| 精品精品国产高清a毛片牛牛| 欧美一个色资源| 欧美丰满少妇xxxbbb| 3d动漫精品啪啪1区2区免费 | 亚洲精品国产品国语在线app| 国产精品毛片无遮挡高清| 欧美国产激情一区二区三区蜜月 | 成人免费毛片app| 国产不卡视频一区| 丰满亚洲少妇av| 成人精品gif动图一区| 波多野洁衣一区| 91在线云播放| 欧美色偷偷大香| 91精品婷婷国产综合久久性色| 欧美老肥妇做.爰bbww| 日韩欧美高清在线| 久久久亚洲精华液精华液精华液| 国产日产欧美精品一区二区三区| 国产精品私人自拍| 亚洲综合视频网| 天天色天天操综合| 寂寞少妇一区二区三区| 懂色av中文一区二区三区| 91国内精品野花午夜精品| 欧美日韩中文精品| 欧美成人国产一区二区| 久久精品亚洲精品国产欧美kt∨| 欧美韩国一区二区| 亚洲国产视频a| 国内精品久久久久影院一蜜桃| 本田岬高潮一区二区三区| 在线观看中文字幕不卡| 精品美女一区二区| 国产精品视频你懂的| 亚洲一区视频在线观看视频| 精品一区二区免费在线观看| 国产99久久久国产精品潘金| 欧美视频一区二| 国产亚洲欧美激情| 亚洲一区在线视频观看| 精品一区二区三区在线播放| 99久久精品国产麻豆演员表| 51精品视频一区二区三区| 亚洲国产精品精华液2区45| 亚洲午夜精品在线| 国产suv精品一区二区883| 欧美日韩亚洲综合一区二区三区| 精品福利在线导航| 亚洲电影激情视频网站| 国产精品一二三四| 欧美日韩电影在线| 国产欧美久久久精品影院 | 美国十次了思思久久精品导航| 国产高清成人在线| 欧美日韩高清一区二区| 国产精品婷婷午夜在线观看| 丝袜美腿高跟呻吟高潮一区| 不卡的av电影在线观看| 日韩免费高清av| 亚洲国产精品自拍| 成人av免费观看| 精品久久久久香蕉网| 亚洲一区二区三区免费视频| 国产九九视频一区二区三区| 欧美一级电影网站| 亚洲一区二区3| 99国产精品久| 国产亚洲一区二区三区| 麻豆精品精品国产自在97香蕉 | 麻豆久久久久久| 欧美图区在线视频| 亚洲精品一二三| av色综合久久天堂av综合| 国产亚洲婷婷免费| 免费高清视频精品| 欧美裸体一区二区三区| 亚洲国产精品一区二区尤物区| av资源网一区| 国产精品视频一二| 国产九色精品成人porny| 精品欧美一区二区三区精品久久 | 亚洲午夜免费电影| 色综合久久综合网| 国产精品午夜免费| 成人一级视频在线观看| 久久久亚洲综合| 国产九色sp调教91| 久久精品日韩一区二区三区| 加勒比av一区二区| 久久久久久久久久久99999| 韩国v欧美v日本v亚洲v| 欧美精品一区二区久久婷婷| 国模娜娜一区二区三区| 国产午夜亚洲精品午夜鲁丝片 | 欧美视频在线一区二区三区 | 黄一区二区三区| wwww国产精品欧美| 国产一区二区不卡在线| 国产欧美日韩精品一区| www.爱久久.com| 国产精品高清亚洲| 色婷婷久久久亚洲一区二区三区| 亚洲女性喷水在线观看一区| 91浏览器在线视频| 亚洲一区二区三区影院| 91精品国产黑色紧身裤美女| 美女被吸乳得到大胸91| 久久精品一区二区三区不卡牛牛 | 丁香六月综合激情| 国产精品成人免费| 欧美性感一区二区三区| 免费成人av资源网| 国产日韩欧美亚洲| 91丨国产丨九色丨pron| 日韩专区中文字幕一区二区| 欧美草草影院在线视频| 成人av在线播放网址| 亚洲精品国产视频| 日韩视频免费直播| 国产99久久久精品| 亚洲国产人成综合网站| 日韩欧美视频一区| 成人h精品动漫一区二区三区| 亚洲一区在线视频| 精品国产伦一区二区三区观看方式| 成人午夜免费视频| 亚洲r级在线视频|