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]);
  }

FileLoop介于int0-3 之间(代码循环运行),用于测试写入速度。如何更改它以编写字符串的实际内容?

WFIO dll 是在没有说明的情况下提供给我的,我似乎无法让它工作。上面的代码是我能得到的最好的,但它写入了一个用空格填充的文件,而不是content变量中的实际字符串。请帮忙。

4

2 回答 2

2

您似乎只向该组件传递了一个长度(字节数),因此它可能不知道要写什么。您的ByteBuf数组被初始化为一个空字节数组,您可能会写出-s的BytesInFiles.Length数量。0您将转换后的内容放入其中BytesInFiles,但您从不使用该缓冲区进行写入 - 您只使用它的长度。

于 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 回答