0

次のコードの何が問題になっていますか?

        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.

4

4 に答える 4

9

whileチェックで1バイトを消費しているため、1バイトおきに書き込んでいます。

于 2012-10-18T17:52:00.293 に答える
5

状態で別の読み取りを行うときに偶数バイトをスキップしているため、奇数バイトのみを書き込んでいますwhere

コードを次のように変更します。

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

ところで、代わりに使用できますFile.Copy("e:\\read.txt", "e:\\write.txt")

于 2012-10-18T17:53:55.883 に答える
2

代わりにこれを試してください:

while (inputstream.Position <= inputstream.Length)
{
    writestream.WriteByte((byte)inputstream.ReadByte());
}
于 2012-10-18T17:52:28.200 に答える
1

このinputstream.ReadByte()メソッドは、カーソルを 1 つ移動させます。

バイトを一度読み取る必要があり、-1 でない場合は書き込む必要があります。そのように:

int read = inputstream.ReadByte();
while (read != -1)
{ 
    writestream.WriteByte((byte)read ); 
    read = inputstream.ReadByte();
} 
于 2012-10-18T17:56:13.477 に答える