连接并将文件拆分为2DeInterleave方法为什么不起作用?

问题描述

好的,所以我制作了使用FileStream将2个文件连接在一起的程序。它从第一个文件中读取2个字节,从第二个文件中读取2个字节,并将它们交替写入输出文件,并且工作正常。

private void buttonInterleave_Click(object sender,EventArgs e)
{
    FileStream fs1 = File.OpenRead(openFileDialogFileInput1.FileName);
    FileStream fs2 = File.OpenRead(openFileDialogFileInput2.FileName);
    FileStream fsout = File.OpenWrite(saveFileDialogFileOutput.FileName);

    Interleave(fs1,fs2,fsout);

    fs1.Close();
    fs2.Close();
    fsout.Close();
}

private void Interleave(FileStream fs1,FileStream fs2,FileStream fsout)
{
    fsout.SetLength(fs1.Length * 2);
    byte[] b1 = new byte[2];
    byte[] b2 = new byte[2];
    int i;
    for (i = 0; i < (fs1.Length * 2); i = i + 4)
    {
        fs1.Read(b1,2);
        fs2.Read(b2,2);
        fsout.Write(b1,2);
        fsout.Write(b2,2);
    }
    return;
}

但是,当我要将输出分成2个文件时,我的代码无法正常工作

private void buttonDeInterleave_Click(object sender,EventArgs e)
{
    FileStream fs = File.OpenRead(OpenFileDialogFileInput.FileName);
    FileStream fs1 = File.OpenWrite(saveFileDialogFileOutput1.FileName);
    FileStream fs2 = File.OpenWrite(saveFileDialogFileOutput2.FileName);

    DeInterleave(fs,fs1,fs2);

    fs.Close();
    fs1.Close();
    fs2.Close();
}

private void DeInterleave(FileStream fsInput,FileStream fs1,FileStream fs2)
{
    fs1.SetLength(fsInput.Length / 2);
    fs2.SetLength(fsInput.Length / 2);
    byte[] b1 = new byte[2];
    byte[] b2 = new byte[2];
    int i;
    for (i = 0; i < (fsInput.Length); i = i + 4)
    {
        fsInput.Read(b1,2);
        fsInput.Read(b2,2);
        fs1.Write(b1,2);
        fs2.Write(b2,2);
    }
}

我最终得到了2个文件,其中都包含00。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)