Why is everything so Stream-based and why can't I use files directly?
The ID3.NET core library is a portable class library that supports a variety of .NET platforms, namely .NET 4 and higher, Silverlight 4 and higher, Windows Phone 7.1 and .NET for Metro-style apps. As such, it misses out on a few features provided by the full
.NET Framework, notably file handling.
This is why the core library uses only Stream-derived classes to load MP3 files.
You can still use the FileStream
class to load MP3 files using the core library:
var fs = new FileStream(@"C:\Music\Song.mp3", FileMode.Open, FileAccess.Read);
var mp3 = new Mp3Stream(fs);
The ID3.Files assembly
If you want to open MP3 files without having to deal with file streams, you can use the
assembly, which is a full .NET Framework library and provides the ability to open and save MP3 files directly.
assembly provides a class called Mp3File
that derives from the core's
class and adds new constructors to load MP3 files by specifying the file name or the
object representing the file. Internally, these constructors create a
instance with the appropriate permissions.
//Open MP3 file in read-only permissions
var mp3 = new Mp3File(@"C:\Music\Song.mp3");
//Open MP3 file with read/write permissions
var mp3 = new Mp3File(@"C:\Music\Song.mp3", Mp3Permissions.ReadWrite);