使用未知的dll从字符串写入字节数组

时间:2012-10-11 19:58:06

标签: c# dll file-io

我有以下代码:

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

修改 这是我正在使用的原始代码,尝试修改它自己似乎失败了,所以我在想你guyz可能看看:

  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是0到3之间的int(代码在循环中运行) 这用于测试写入速度。 怎么会改变它来写一个字符串的实际内容?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我想你可能在这里错过了一步。完成后:

Byte[] BytesInFiles = GetBytes(content); 

你不需要对BytesInFiles做些什么吗?目前看起来好像是在编写BytesInFiles的块,它们在创建时会被初始化为包含全部零。

编辑:这样的事情有帮助吗?

Byte[] BytesInFiles = GetBytes(content); 

using (WinFileIO WFIO = new WinFileIO(BytesInFiles)) 
{ 
    WFIO.OpenForWriting(path);        
    WFIO.WriteBlocks(BytesInFiles.Length); 
}