我有以下代码:
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
变量中写入一个填充空格而不是实际字符串的文件。求助。
答案 0 :(得分:2)
您似乎只将一个长度(字节数)传递给此组件,因此它可能不知道要写什么。您的ByteBuf
数组初始化为空字节数组,您可能会写出BytesInFiles.Length
个0
- 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);
}