str is empty. The stream, however, is valid. The Length property matches the length of the file, it was opened with the Read permission and the CanRead property is true. The position was at 0, and has not been advanced and is still at 0 after the read. The attached screenshot shows the stream (and str) variables after the ReadToEnd call.ReadToEnd: