c# - 获取字节数组而不是将字节数组保存为文件

标签 c# arrays storage

我从 SQL 服务器获取原始 varbinary 数据。 首先,我将其保存为文件,因为我正在加载该文件并在图表上绘制一系列点。但现在我还想当用户单击按钮时将其保存到另一台服务器。 这是非常愚蠢的:

  1. 从服务器加载二进制数据
  2. “转换”为文件
  3. 将其保存到路径
  4. 从此路径加载。
  5. 绘制图表。
  6. 从此路径加载
  7. 保存到服务器。

当我可以做的时候:

  1. 从服务器加载二进制数据
  2. “转换”为 Byte[] 或某种其他类型的数组。
  3. 从此数组绘制图表
  4. 将此数组保存到服务器。

我认为它需要是一个字节数组,因为我加载的服务器和我保存的服务器具有数据类型 varbinary(max)。我已附上一张图像,显示我希望该程序执行的操作。

所以我的问题:停止使用 BinaryWriter 保存到路径,并开始获取可以使用多次的 byte[]

这是我认为它保存到给定文件路径的部分。

string fullPath = C:/Users/Mathias/Documents/Lektier/IHA/3. Semester/Projekt/Temporary Blob + "/" + fileName;
        while (reader.Read())
        {
            FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.Write);
            BinaryWriter writer = new BinaryWriter(fs);
            CurrentIndex = 0;
            BytesReturned = reader.GetBytes(1, CurrentIndex, Blob, 0, BufferSize);
            while (BytesReturned == BufferSize)
            {
                writer.Write(Blob);
                writer.Flush();
                CurrentIndex += BufferSize;
                BytesReturned = reader.GetBytes(1, CurrentIndex, Blob, 0, BufferSize);
            }

            writer.Write(Blob, 0, (int)BytesReturned);

            writer.Flush(); writer.Close();
        }

My drawing skills are subpar

如果您想要此表单的完整源代码,请询问。现在有点乱,所以我不明白粘贴整个内容的意义。

最佳答案

听起来您应该只写信给 MemoryStream :

var stream = new MemoryStream();
var buffer = new byte[8 * 1024];
long bytesRead;
long index = 0;
while ((bytesRead = reader.GetBytes(1, index, buffer, 0, buffer.Length)) > 0)
{
    stream.Write(buffer, 0, (int) bytesRead);
    currentIndex += bytesRead;
}
byte[] data = stream.ToArray();

关于c# - 获取字节数组而不是将字节数组保存为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077629/

相关文章:

c# - 连接到 oracle .net 核心

c# - 在 C# 中模拟方法级联

c# - 自动属性会影响运行时性能吗?

c++ - 同一变量的测试打印似乎给出了不同的结果

ios - 如何在 Swift 中将新项目添加到我的多类型数组

C 存储大小不是常量...为什么?

android - 将 PDF 保存在 Android 11 上的外部下载目录中

c# - 替换字符串中的文本

javascript - 无法获取未定义或空引用的属性 'substr'

PHP 访问私有(private) Azure 存储容器