<TypeSignatureLanguage="C#"Value="public class VfsStream : System.IO.Stream, IDisposable"Maintainer="auto"/>
<AssemblyInfo>
<AssemblyName>gnome-vfs-sharp</AssemblyName>
<AssemblyPublicKey>[00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 71 EB 6C 55 75 52 9C BF 72 44 F7 A6 EA 05 62 84 F9 EA E0 3B CF F2 CC 13 2C 9C 49 0A B3 09 EA B0 B5 6B CE 44 9D F5 03 D9 C0 A8 1E 52 05 85 CD BE 70 E2 FB 90 43 4B AC 04 FA 62 22 A8 00 98 B7 A1 A7 B3 AF 99 1A 41 23 24 BB 43 25 F6 B8 65 BB 64 EB F6 D1 C2 06 D5 73 2D DF BC 70 A7 38 9E E5 3E 0C 24 6E 32 79 74 1A D0 05 03 E4 98 42 E1 9B F3 7B 19 8B 40 21 26 CB 36 89 C2 EA 64 96 A4 7C B4]</AssemblyPublicKey>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyCulture>neutral</AssemblyCulture>
<Attributes/>
</AssemblyInfo>
<ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <linklocation="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
<seecref="T:System.IO.Stream"/> implementation using the Gnome.Vfs library.</summary>
<remarks>
<para>The VfsStream class hides the Gnome.Vfs API from the developer. It uses the <seecref="T:System.IO.Stream"/> class and associated enums to access the <seecref="T:System.String"/> representation of the <seecref="T:Gnome.Vfs.Uri"/> passed in the constructor.</para>
<para>This class is particularly useful if you want to develop an application that wants to use Gnome.Vfs where available, but can't depend on it being available always. On platforms where Gnome.Vfs is not available, the application can fallback to a regular <seecref="T:System.IO.FileStream"/>. This doesn't affect how the rest of the application deals with the stream since both implement the abstract <seecref="T:System.IO.Stream"/> class.</para>
<summary>Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.</summary>
<paramname="buffer">a <seecref="T:System.Byte"/> array. When this method returns, the elements between <paramrefname="offset"/> and <paramrefname="offset"/> + <paramrefname="count"/> are replaced by the bytes read from the current stream.</param>
<paramname="offset">a <seecref="T:System.Int32"/> that specifies the zero based byte offset in <paramrefname="buffer"/> at which to begin storing the data read from the current stream.</param>
<paramname="count">a <seecref="T:System.Int32"/> that specifies the maximum number of bytes to be read from the stream.</param>
<returns>a <seecref="T:System.Int32"/> that specifies the total number of bytes read into the buffer, or zero if the end of the stream has been reached before any data could be read.</returns>
<summary>Begins an asynchronous read operation.</summary>
<paramname="buffer">the <seecref="T:System.Byte"/> array to read the data into.</param>
<paramname="offset">a <seecref="T:System.Int32"/> that specifies the byte offset in <paramrefname="buffer"/> at which to begin writing data from the stream.</param>
<paramname="count">a <seecref="T:System.Int32"/> that specifies the maximum number of bytes to read from the stream.</param>
<paramname="cback">a <seecref="T:System.AsyncCallback"/> that is called when the read operation has finished.</param>
<paramname="state">an application-defined object, or <seelangword="null"/>.</param>
<returns>a <seecref="T:System.IAsyncResult"/> that contains information about the asynchronous read operation, which could still be pending.</returns>
<remarks>
<para>This method starts an asynchronous read operation using the <seecref="T:Gnome.Vfs.Async"/> class.</para>
<para>To wait until the operation has finished, you cannot use the <seecref="T:System.IAsyncResult.AsyncWaitHandle"/> since that will also block the Gnome.Vfs thread. Instead, use <seecref="M:GLib.MainContext.Iteration"/> like this:</para>
<summary>Writes a sequence of bytes to the current stream and advances the current position within the current stream by the number of bytes written.</summary>
<paramname="buffer">a <seecref="T:System.Byte"/> array containing the data to write.</param>
<paramname="offset">a <seecref="T:System.Int32"/> that specifies the zero based byte offset in <paramrefname="buffer"/> at which to start copying bytes to the current stream.</param>
<paramname="count">a <seecref="T:System.Int32"/> that specifies the number of bytes to be written to the current stream.</param>
<summary>Begins an asynchronous write operation.</summary>
<paramname="buffer">the <seecref="T:System.Byte"/> array to be written to the current stream.</param>
<paramname="offset">a <seecref="T:System.Int32"/> that specifies the byte offset in <paramrefname="buffer"/> at which to begin copying bytes to the current stream.</param>
<paramname="count">a <seecref="T:System.Int32"/> that specifies the maximum number of bytes to be written to the stream.</param>
<paramname="cback">a <seecref="T:System.AsyncCallback"/> that is called when the write operation has finished.</param>
<paramname="state">an application-defined object, or <seelangword="null"/>.</param>
<returns>a <seecref="T:System.IAsyncResult"/> that represents the asynchronous write, which could still be pending.</returns>
<remarks>
<para>This method starts an asynchronous write operation using the <seecref="T:Gnome.Vfs.Async"/> class.</para>
<para>To wait until the operation has finished, you cannot use the <seecref="T:System.IAsyncResult.AsyncWaitHandle"/> since that will also block the Gnome.Vfs thread. Instead, use <seecref="M:GLib.MainContext.Iteration"/> like this:</para>
<summary>Construct a new instance of the VfsStream with the specified <seecref="T:System.IO.FileMode"/>. Based the async parameter, the file will be accessed (a)synchronously.</summary>
<paramname="text_uri">
<seecref="T:System.String"/> representing the <seecref="T:Gnome.Vfs.Uri"/> to open.</param>
<paramname="mode">
<seecref="T:System.IO.FileMode"/> specifying how to open the <seecref="T:Gnome.Vfs.Uri"/>.</param>
<paramname="async">whether to access the file (a)sychronously.</param>