在C#中使用Stream.Readbyte和stream.Writebyte进行读写

Ger*_*rry 0 c# stream

以下代码有什么问题?

        Stream inputstream = File.Open("e:\\read.txt", FileMode.Open);
        Stream writestream = File.Open("e:\\write.txt", FileMode.OpenOrCreate);

        do
        {
            writestream.WriteByte((byte)inputstream.ReadByte());
        }
        while (inputstream.ReadByte() != -1);
Run Code Online (Sandbox Code Playgroud)

read.txt有"快速的棕色狐狸跳过懒狗".

而write.txt文件包含的内容很少,只需"teqikbonfxjme vrtelz o".

Aus*_*nen 9

你只是在写所有其他字节,因为你在while支票中消耗了一个字节.


Ser*_*kiy 5

您只写入奇数字节,因为在where条件下进行另一次读取时您会跳过偶数字节。

这样修改你的代码:

int byteRead;
while((byteRead = inputstream.ReadByte()) != -1)
   writestream.WriteByte((byte)byteRead);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你可以使用File.Copy("e:\\read.txt", "e:\\write.txt")