将Byte[]解析为文件而不保存
本文关键字:文件 保存 Byte | 更新日期: 2023-09-27 17:58:20
我正在查询一个web服务(外部系统),该服务返回一个字节[]。这个字节[]是一个csv文件,我将字节[]作为csv保存到一个临时位置,然后将csv文件解析到数据库。
是否可以直接读取byte[],而不是将文件保存到临时位置,而是将其存储在内存中并将文件内容解析到数据库?
我把Opening byte[]看作一个文件,但没有先把它保存为文件——不确定现在情况是否发生了变化?任何投入都将不胜感激。
不太容易找到,但标准中有一个CSV解析器。
public void HandleMycontent(byte[] content)
{
using (var stream = new System.IO.MemoryStream(content))
{
using (var reader = new StreamReader(stream))
{
using (var parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(reader))
{
//parse my csv here
}
}
}
}
您可以使用MemoryStream
类而不是FileStream
:
var stream = new MemoryStream(yourByteArray);
您链接到的相关问题是关于在Word中加载它。这与仅在本地解析它非常不同。在这种情况下,只需将其连接到MemoryStream
和CsvReader
(外部链接):作业完成:
using(var ms = new MemoryStream(theData))
using(var sr = new StreamReader(ms))
using(var reader = new CsvReader(sr)) {
// read the data...
}
不完全确定这一点,因为在另一端,对象应该按照相同的逻辑进行序列化,但您可以尝试一下:
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
memoryStream.Write(serializedInstance, 0, serializedInstance.Length);
memoryStream.Seek(0, SeekOrigin.Begin);
string deserializedInstance = (string)binaryFormatter.Deserialize(memoryStream);