C# 在内存中写入文本文件而不存储到磁盘
我有一个字符串列表作为输入,我需要将其放入一个文本文件,然后将该文本文件放入一个加密的ZIP存档。我想分两步完成这项工作:C# 在内存中写入文本文件而不存储到磁盘,c#,.net,C#,.net,我有一个字符串列表作为输入,我需要将其放入一个文本文件,然后将该文本文件放入一个加密的ZIP存档。我想分两步完成这项工作: 创建一个文本文件并获取其字节 使用zip库将字节写入存档 但是,有一个主要要求:出于安全原因,不允许我将文本文件写入磁盘 我一直在玩弄记忆流和流作者等,但似乎不明白。我更喜欢UTF8编码 private byte[] GenerateTextFile(List<string> contents) { // Generate a text file in
private byte[] GenerateTextFile(List<string> contents)
{
// Generate a text file in memory and return its bytes
}
private byte[]GenerateTextFile(列出内容)
{
//在内存中生成文本文件并返回其字节
}
你们能帮帮我吗?这很简单,你们应该把所有的字符串合并成一个字符串,然后调用
Encoding.UTF8.GetBytes()
要对可以使用的字符串进行加密,请执行以下操作:
string.Join(delimiter, contents)
如果不需要delimeter,只需将其移除,否则可能需要使用\n
所以你可以用这个方法:
private byte[] GenerateTextFile(List<string> contents)
{
return Encoding.UTF8.GetBytes(string.Join(delimiter, contents));
}
private byte[]GenerateTextFile(列出内容)
{
返回Encoding.UTF8.GetBytes(string.Join(分隔符,内容));
}
不太确定,但您可以尝试使用内存映射文件?我不理解这里的问题,文本文件只是将文本编码为字节,这不是您想要的吗:byte[]fileContents=encoding.UTF8.GetBytes(string.Join(Environment.Newline,contents))
?为什么不简单地使用String.Join
而不是Aggregate
?好的,这是另一个可能更简单的选项。我会更改答案。一定要使用String。改为加入。它不仅更干净(API正是为该用例设计的),而且速度更快(使用StringBuilder
)。