/// <summary> /// Creates an instance of the Mp3Stream class by passing in a Stream object containing the /// MP3 data. /// </summary> /// <param name="stream">The Stream object containing the MP3 data.</param> /// <param name="permissions">The permissions applicable to the MP3 data. Defaults to read-only access.</param> public Mp3Stream(Stream stream, Mp3Permissions permissions = Mp3Permissions.Read) { SetupStream(stream, permissions); //The stream is owned by the caller, so it is their responsibility to dispose it. StreamOwned = false; }
public Mp3File(FileInfo fileInfo, Mp3Permissions permissions = Mp3Permissions.Read) { if (fileInfo == null) { throw new ArgumentNullException("fileInfo"); } FileAccess fileAccess = PermissionsToFileAccessMapping[permissions]; FileStream fileStream = fileInfo.Open(FileMode.Open, fileAccess, FileShare.Read); SetupStream(fileStream, permissions); //Since we created the stream, we are responsible for disposing it when we're done StreamOwned = true; }
/// <summary> /// Creates an instance of the Mp3Stream class by passing in the MP3 data as a byte array. /// </summary> /// <param name="byteStream">The byte array representing the MP3 data.</param> /// <param name="permissions">The permissions applicable to the MP3 data. Defaults to read-only access.</param> public Mp3Stream(byte[] byteStream, Mp3Permissions permissions = Mp3Permissions.Read) { if (byteStream == null) { throw new ArgumentNullException("byteStream"); } //Note: For Write permissions, we cannot use the MemoryStream ctor that takes the byte //array as a parameter. Those streams cannot increase their capacity using the SetLength //method, which is needed by the framework when adding tag information to the stream. var stream = new MemoryStream(byteStream.Length); stream.Write(byteStream, 0, byteStream.Length); SetupStream(stream, permissions); }
protected void SetupStream(Stream stream, Mp3Permissions permissions) { if (stream == null) { throw new ArgumentNullException("stream"); } if (permissions == Mp3Permissions.Write) { permissions = Mp3Permissions.ReadWrite; } if (!stream.CanRead || !stream.CanSeek) { throw new Id3Exception(Id3Messages.StreamNotReadableOrSeekable); } if (permissions == Mp3Permissions.ReadWrite && !stream.CanWrite) { throw new Id3Exception(Id3Messages.StreamNotWritable); } Stream = stream; _permissions = permissions; }
public Mp3FileStub(string file, Mp3Permissions mp3Permissions) { }