使用stream.readbyte和stream.writebyte在c#中读写



以下代码有什么问题?

        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);

read.txt上有"快速的棕狐跳过了懒狗"。

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

您只是在编写每个字节,因为您在while检查中消耗一个字节。

您只写奇数字节,因为您即使在where条件中进行其他阅读时都跳过字节。

以这种方式修改代码:

int byteRead;
while((byteRead = inputstream.ReadByte()) != -1)
   writestream.WriteByte((byte)byteRead);

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

尝试一下:

while (inputstream.Position <= inputstream.Length)
{
    writestream.WriteByte((byte)inputstream.ReadByte());
}

inputstream.ReadByte()方法使您可以光标移动一个。

您需要一次读取字节,如果不是-1,则写入它。就是这样:

int read = inputstream.ReadByte();
while (read != -1)
{ 
    writestream.WriteByte((byte)read ); 
    read = inputstream.ReadByte();
} 

相关内容

  • 没有找到相关文章

最新更新