Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在内存中写入文本文件而不存储到磁盘_C#_.net - Fatal编程技术网

C# 在内存中写入文本文件而不存储到磁盘

C# 在内存中写入文本文件而不存储到磁盘,c#,.net,C#,.net,我有一个字符串列表作为输入,我需要将其放入一个文本文件,然后将该文本文件放入一个加密的ZIP存档。我想分两步完成这项工作: 创建一个文本文件并获取其字节 使用zip库将字节写入存档 但是,有一个主要要求:出于安全原因,不允许我将文本文件写入磁盘 我一直在玩弄记忆流和流作者等,但似乎不明白。我更喜欢UTF8编码 private byte[] GenerateTextFile(List<string> contents) { // Generate a text file in

我有一个字符串列表作为输入,我需要将其放入一个文本文件,然后将该文本文件放入一个加密的ZIP存档。我想分两步完成这项工作:

  • 创建一个文本文件并获取其字节
  • 使用zip库将字节写入存档
  • 但是,有一个主要要求:出于安全原因,不允许我将文本文件写入磁盘

    我一直在玩弄记忆流和流作者等,但似乎不明白。我更喜欢UTF8编码

    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
    )。