You can use reflector or a similar tool to see what the Dispose method does, I would suggest it would almost certainly close a stream that is open, the reason it needs a dispose at all is because there's a physical resource to be cleaned up, and it's the file handle, which means making sure it is closed.
Here is the Dispose method of StreamWriter
protected override void Dispose(bool disposing)
{
try
{
if ((this.stream != null) && (disposing || (!this.Closable && (this.stream is __ConsoleStream))))
{
this.Flush(true, true);
if (this.mdaHelper != null)
{
GC.SuppressFinalize(this.mdaHelper);
}
}
}
finally
{
if (this.Closable && (this.stream != null))
{
try
{
if (disposing)
{
this.stream.Close();
}
}
finally
{
this.stream = null;
this.byteBuffer = null;
this.charBuffer = null;
this.encoding = null;
this.encoder = null;
this.charLen = 0;
base.Dispose(disposing);
}
}
}
}
Notice the calls to Flush() and Close()