我在一个过程中生成一个文本文件,该过程最后循环遍历输入给它的字符串列表,并通过MemoryStream
和StreamWriter
将其转换为{{ 1}}。然后,使用byte[]
数据类型将byte[]
保存到Oracle数据库。虽然它适用于大多数数据(通常是数千行,但我的数据在5,000到40,000之间,无论结果如何,它都是一样的),但最后有一个特定的BLOB
,但是总是不见了。通常,最后出现在文件中的最后一行会被切除一半。
生成message
的函数:
byte[]
将public byte[] GenerateFileData()
{
var fileData = new byte[0];
using (var ms = new MemoryStream())
{
using (var sw = new StreamWriter(ms))
{
Messages.ForEach(x => sw.WriteLine(x)); // Messages is a list of strings in this class
fileData = ms.ToArray();
}
}
return fileData;
}
保存到数据库的功能:
byte[]
最后,将数据转换为文件的功能:
public void SaveLogFile(int entityId, byte[] fileData)
{
using (var context = new SomeDBContext())
{
var entity= context.SomeEntity.FirstOrDefault(x => x.Id == runId);
if(entity != null)
{
entity.LOG_FILE = fileData;
context.SaveChanges();
}
}
}
答案 0 :(得分:2)
在编写器关闭此代码后,尝试获取MemoryStream内容:
public byte[] GenerateFileData()
{
var fileData = new byte[0];
using (var ms = new MemoryStream())
{
using (var sw = new StreamWriter(ms))
{
Messages.ForEach(x => sw.WriteLine(x)); // Messages is a list of strings in this class
}
ms.Flush();
fileData = ms.ToArray();
}
return fileData;
}