以下代码有什么问题?
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();
}