gpt4 book ai didi

c# - 如何使用 Stream.Write 正确保留更多空间?

转载 作者:行者123 更新时间:2023-11-30 16:48:24 27 4
gpt4 key购买 nike

public override void Write(byte[] buffer, int offset, int count)
{
var bytesToWriteTotal = count;

while (bytesToWriteTotal > 0)
{
// If we do not have enough space in the cloud, we'll reserve more
var capacity = GetCurrentCapacity();
var delta = Position + bytesToWriteTotal - capacity;

if (delta > 0)
{
Resize(2 * (capacity + delta));
}
...

这是确保我有足够空间的正确方法还是我应该像这样添加 offset:
var delta = Position + offset + bytesToWriteTotal - 容量;

最佳答案

不要添加offset,它是buffer中的一个位置,从这里开始读取。您读取了 count 个数字,所以这是您要写入的字节数。

您应该在 while 循环之前执行一次扩展:

var capacity = GetCurrentCapacity();
var delta = Position + count - capacity;
if (delta > 0) {
Resize(2 * (capacity + delta));
}
var bytesToWrite = count;
while (bytesToWriteTotal > 0) {
...
}

在调整大小时乘以 2 可能过于激进,因为您只需要 (capacity + delta) 字节。

关于c# - 如何使用 Stream.Write 正确保留更多空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com