我曾经问过类似的问题,所以请原谅,如果你发现它更多的重复,虽然这里的代码是不同的,我正在努力修复。
下面是我正在读取JSON文件并复制Azure表格存储中的内容的代码。正在从blob存储读取Json文件。现在我正在从记忆中阅读并传递要复制的内容。但是考虑到大型Json文件可能会给我带来内存异常,我希望将其作为流读取,而不将其存储为内存。我该怎么做呢?
读取JSON的代码:
List<string> lines = new List<string>();
foreach (var files in recFiles)
{
Stream data = await DownloadBlob(containerName, fileName, connectionString);
StreamReader reader = new StreamReader(data, Encoding.UTF8);
string dataContents = reader.ReadToEnd();
lines.Add(dataContents);
}
await PopulateTable(lines);
DownloadBlob:
public async Task<Stream> DownloadBlob(string containerName, string fileName, string connectionString)
{
Microsoft.Azure.Storage.CloudStorageAccount storageAccount = Microsoft.Azure.Storage.CloudStorageAccount.Parse(connectionString);
CloudBlobClient serviceClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = serviceClient.GetContainerReference(containerName);
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
if (!blob.Exists())
{
throw new Exception("Blob Not found");
}
return await blob.OpenReadAsync();
}
读取和上传Json:
public async Task<List<DynamicTableEntity>> PopulateTable(IEnumerable<string> lines)
{
var validator = new JsonSchemaValidator();
var tableData = new List<JObject>();
// Validate all entries
foreach (var line in lines)
{
if (string.IsNullOrWhiteSpace(line))
continue;
var data = JsonConvert.DeserializeObject<JObject>(line);
...... // adding to table
}
}
像这样的办法可能会管用。我假设这是一个更多的项目阵列,我没有时间完全测试它。
List<string> lines = new List<string>();
foreach (var files in recFiles)
{
using (Stream data = await DownloadBlob(containerName, fileName, connectionString))
{
using (StreamReader reader = new StreamReader(data, Encoding.UTF8) )
{
while(reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
// load each object from stream
var jobject = JObject.Load(reader);
PopulateTable(jobject.ToString(Formatting.None));
}
}
}
}
}
问题内容: 我正在编写我的第一个烧瓶应用程序。我正在处理文件上传,基本上我想要的是读取上传文件的数据/内容而不保存它,然后将其打印在结果页面上。是的,我假设用户始终上传一个文本文件。 这是我正在使用的简单上传功能: 现在,我正在保存文件,但是我需要的是一个’a’变量来包含文件的内容/数据。 问题答案: 包含字段。该对象必须扩展IO或文件对象,因此它必须包含read和其他类似方法。还扩展了strea
我想围绕pdf文档构建一个包装器来存储更多信息。我用但这破坏了pdf文件(图像等部分丢失)。 所以我尝试了,它似乎可以在没有任何损坏的情况下获取内容。但是我不知道如何将ArrayBuffer转换为字符串,这样我就可以将它的值写入json文件以导出它。当我使用 我得到一个错误:
问题内容: 有什么方法可以读取文本文件并将内容存储在Jtable中?我有一个文本文件,其中包含有关某些过程的某些信息。就像一个具有列和各自值的表。是否可以获取.txt文件的内容并以Jtable的形式显示?我正在使用Eclipse和Window Builder。任何帮助将不胜感激。谢谢! 问题答案: 我将研究Oracle的教程: 读/写文本文件 JTable教程 当从文本文件中获取数据时,您需要将其
问题内容: 我在Hibernate中有类似以下模型的内容: 我现在想将Person持久化到一个表,该表中所有person的地址都被序列化为JSON字符串并存储在Person表的一列中。数据库中的“个人”记录如下所示: 有没有办法使用Hibernate来做到这一点? 如果地址不是列表,我可以注册一个UserType来执行序列化。 我也不能使用JPA的@Converter,因为Hibernate实现不
问题内容: 我正在编写一个简单的部署工具,该工具需要从s3中获取tar文件,然后将其解压缩,然后将其上传到我们的登台服务器。我想这样做而不将文件存储在本地,而是将它们保存在内存中。 这是我的代码,用于从s3下载文件 我想避免在此示例中创建目录和文件,而只是将所有内容保留在内存中。我省去了从代码中提取文件的步骤。下一步将使用go- scp 上传文件,如下所示: 然后,我的问题将集中在这段代码的一部分
我必须写一个程序: 提示用户输入输入文件的名称, 从输入文件中读取数据,并将有关汽车的信息存储在汽车对象数组列表中, 将数组列表中未排序的数据打印到屏幕上,如下所示: 我想不出前三步该怎么做。 我也有两个类,与这个项目,并将添加他们,如果需要/需要。因此,基本上只需要帮助了解如何从用户那里读取文本文件,将文本文件的内容添加到ArrayList中,并以格式化的方式打印出ArrayList的内容(我的
问题内容: 我知道如何使用和File IOException 读取文件,但是我唯一不知道的是如何将文本作为数组存储在文件中。 这是我的代码: 这是我的文件包含的内容: 问题答案: 存储为字符串: 对于花车:
问题内容: 我需要逐行读取一个大文件。可以说该文件的大小超过5GB,我需要读取每一行,但是显然我不想使用它,因为它将在内存中创建一个非常大的列表。 下面的代码在这种情况下将如何工作?自身是否一一读取到内存中?是否需要生成器表达式? 另外,与命令一样,我该怎么做才能以相反的顺序阅读? 问题答案: 我提供此答案是因为Keith的提示虽然简洁,但并未明确关闭文件