0

私は次のコードを持っています:

    int BufSize = 60000000;
    int BufSizeM1M = BufSize - 1000000;
    byte[] ByteBuf = new byte[BufSizeM1M];
    byte[] ByteBufVer = new byte[BufSizeM1M];
    using (WinFileIO WFIO = new WinFileIO(ByteBuf))
    {
        WFIO.OpenForWriting(path);
        Byte[] BytesInFiles = GetBytes(content);
        WFIO.WriteBlocks(BytesInFiles.Length);
    }

編集: これは私が作業していた元のコードです。自分で変更しようとすると失敗するようです。

  int BufSize = 60000000;
  int BufSizeM1M = BufSize - 1000000;
  byte[] ByteBuf = new byte[BufSizeM1M];
  byte[] ByteBufVer = new byte[BufSizeM1M];
  int[] BytesInFiles = new int[3]
  using (WinFileIO WFIO = new WinFileIO(ByteBuf))
      WFIO.OpenForWriting(path);
      WFIO.WriteBlocks(BytesInFiles[FileLoop]);
  }

FileLoopint0 から 3 の間です (コードはループで実行されました)。これは書き込み速度のテストに使用されました。文字列の実際の内容を書き込むためにどのように変更しますか?

WFIO dll が指示なしで提供されたので、動作させることができないようです。content上記のコードは私が得ることができる最高のものですが、変数内の実際の文字列ではなく、スペースで満たされたファイルを書き込みます。助けてください。

4

2 に答える 2

2

このコンポーネントには長さ (バイト数) のみを渡しているように見えるため、何を書き込むべきかがわからない可能性があります。あなたの配列は空のバイト配列に初期化されており、おそらく-sの数をByteBuf書き出すでしょう。変換されたコンテンツを入れていますが、そのバッファーを書き込みに使用することはありません。その長さのみを使用します。BytesInFiles.Length0BytesInFiles

于 2012-10-11T20:01:07.930 に答える
1

ここで一歩を踏み外している可能性があると思います。完了したら:

Byte[] BytesInFiles = GetBytes(content); 

で何かする必要はありませんBytesInFilesか?現在、BytesInFiles作成時にすべてゼロを含むように初期化されている のチャンクを書いているようです。

編集:このようなものは役に立ちますか?

Byte[] BytesInFiles = GetBytes(content); 

using (WinFileIO WFIO = new WinFileIO(BytesInFiles)) 
{ 
    WFIO.OpenForWriting(path);        
    WFIO.WriteBlocks(BytesInFiles.Length); 
} 
于 2012-10-11T20:04:25.197 に答える