private string GetContents(SafeUri uri) { var demux = Provider.CreateDemuxVfs(uri.AbsoluteUri); using (var stream = demux.ReadStream) { var reader = new System.IO.StreamReader(stream); return(reader.ReadToEnd()); } }
public void DemuxReadFile() { ForEachProvider(() => { Assert.IsTrue(File.Exists(foo)); var demux = Provider.CreateDemuxVfs(foo.AbsoluteUri); var stream = demux.ReadStream; // foo contains 'bar' Assert.AreEqual((byte)'b', stream.ReadByte()); Assert.AreEqual((byte)'a', stream.ReadByte()); Assert.AreEqual((byte)'r', stream.ReadByte()); demux.CloseStream(stream); }); }
public void DemuxCreateFile() { ForEachProvider(() => { var newf = Uri("newfile"); var newp = Path("newfile"); File.OpenWrite(newf, false).Close(); Assert.IsTrue(File.Exists(newf)); var demux = Provider.CreateDemuxVfs(newp); Assert.IsTrue(demux.IsWritable); Assert.IsTrue(demux.IsReadable); var stream = demux.WriteStream; Assert.IsTrue(stream.CanWrite); stream.WriteByte(0xAB); demux.CloseStream(stream); Assert.IsTrue(File.Exists(newf)); }); }
public void DemuxOverwriteFile() { ForEachProvider(() => { Assert.IsTrue(File.Exists(foo)); Assert.AreEqual(3, File.GetSize(foo)); var demux = Provider.CreateDemuxVfs(foo.AbsoluteUri); Assert.IsTrue(demux.IsWritable); Assert.IsTrue(demux.IsReadable); var stream = demux.WriteStream; Assert.IsTrue(stream.CanWrite); Assert.IsTrue(stream.CanRead); // Make sure can actually read from WriteStream - required by TagLib# // stream should contain 'bar', eg first byte == 'b' Assert.AreEqual(3, stream.Length); Assert.AreEqual((byte)'b', stream.ReadByte(), "Error in GIO backend - shouldn't happen - fix (and the Banshee GIO backend) requires gio 2.22"); stream.Position = 0; // Replace the first two bytes, and truncate the third stream.WriteByte(0xAB); stream.WriteByte(0xCD); stream.SetLength(2); // And verify those bytes are readable stream.Position = 1; Assert.AreEqual(0xCD, stream.ReadByte()); stream.Position = 0; Assert.AreEqual(0xAB, stream.ReadByte()); // And make sure the file is now the right size; 2 bytes demux.CloseStream(stream); Assert.IsTrue(File.Exists(foo)); Assert.AreEqual(2, File.GetSize(foo)); }); }
public static TagLib.File OpenFile(string file) { return(TagLib.File.Create(Provider.CreateDemuxVfs(file))); }
public static TagLib.File OpenFile(string file, string mimetype, TagLib.ReadStyle readStyle) { return(TagLib.File.Create(Provider.CreateDemuxVfs(file), mimetype, readStyle)); }
public static IFileSystemEntryPermissions GetPermissions(SafeUri uri) { return(Provider.CreateDemuxVfs(uri)); }