diff --git a/src/System.IO.Abstractions/FileStream.cs b/src/System.IO.Abstractions/FileStream.cs
new file mode 100644
index 000000000..21dc1fef4
--- /dev/null
+++ b/src/System.IO.Abstractions/FileStream.cs
@@ -0,0 +1,58 @@
+namespace System.IO.Abstractions
+{
+ ///
+ /// A that has properties similar to
+ ///
+ public class FileStream : Stream
+ {
+ private readonly Stream _wrappedStream;
+
+ ///
+ /// Constructor for
+ ///
+ /// The underlying wrapped
+ /// The name of the underlying stream object
+ public FileStream(Stream wrappedStream, string name)
+ {
+ _wrappedStream = wrappedStream;
+
+ Name = name;
+ }
+
+ ///
+ /// Name of the underlying stream object.
+ /// See
+ ///
+ public string Name { get; }
+
+ ///
+ public override bool CanRead => _wrappedStream.CanRead;
+
+ ///
+ public override bool CanSeek => _wrappedStream.CanSeek;
+
+ ///
+ public override bool CanWrite => _wrappedStream.CanWrite;
+
+ ///
+ public override long Length => _wrappedStream.Length;
+
+ ///
+ public override long Position { get => _wrappedStream.Position; set => _wrappedStream.Position = value; }
+
+ ///
+ public override void Flush() => _wrappedStream.Flush();
+
+ ///
+ public override int Read(byte[] buffer, int offset, int count) => _wrappedStream.Read(buffer, offset, count);
+
+ ///
+ public override long Seek(long offset, SeekOrigin origin) => _wrappedStream.Seek(offset, origin);
+
+ ///
+ public override void SetLength(long value) => _wrappedStream.SetLength(value);
+
+ ///
+ public override void Write(byte[] buffer, int offset, int count) => _wrappedStream.Write(buffer, offset, count);
+ }
+}