2

こんにちは、ユーザーのコンピューターからファイルを読み取り、特定のネットワーク資格情報を使用してネットワーク共有に書き出すと、ファイルのごく一部が破損します。16 進数エディターでファイルを開くと、最初の行の 16 進数が異なります

Header:    00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
Good File: 50 4b 03 04 14 00 08 00 00 00 37 57 51 41 6f 61
Bad File:  50 4b 03 04 14 00 08 00 00 00 b7 56 51 41 6f 61

列 0a と 0b の違いはファイル全体に存在し、

私がこれについて間違った方法で行っている場合は、必ず私を修正してください。どんな助けでも大歓迎です。私が使用しているコードは以下のとおりです

var fileStream = 
    new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.None);

var impersonationContext =
    new WrapperImpersonationContext("myDomain", "myname", "myPass");

        impersonationContext.Enter();

        try
        {
            using (Stream file = File.OpenWrite(destination))
            {
                fileStream.CopyTo(file);
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
        finally
        {
            impersonationContext.Leave();

            if(fileStream != null)
            {
                fileStream.Close();
            }
        }
4

2 に答える 2

2

FileStream.CopyTo()宛先ファイルに n バイトを書き込みますが、以前に存在した宛先ファイルの末尾を消去しません。で出力ストリームを開くとFileMode.Create、正確なコピーが保証されます。

最後に呼び出すfile.SetLength(file.Position);こともできますが、どの程度確実かはわかりません...

于 2012-10-17T17:32:12.920 に答える
1

.zip ファイルのヘッダーを見ています。認識できるのは、このフォーマットを発明した Phil Katz のイニシャルである「PK」です。ヘッダー形式は、ここに文書化されています。違いはオフセット 10 で発生します。これは「ファイルの最終変更日」です。変更日が異なるファイルは大きなミステリーではなく、問題を簡単に説明することはできません。

于 2012-10-17T18:53:19.557 に答える