一个流中有多个文件,自定义流 [英] Multiple file in one Stream, custom stream
本文介绍了一个流中有多个文件,自定义流的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
根据答案此处我想将多个文件流写入一个流,如下所示:
According to the answer here I want to write multiple files stream to one stream as following:
为每个流$ b $的长度保留4个字节b每个流内容在其长度数字(4个字节后)之后写入
都会在末尾流中出现
4 byte reserved for length number of each stream each stream content write after it's length number(after 4 byte) at the end stream will be something like this
Stream = File1 len + File1流内容+ File2 len + File2流内容+ ....
Stream = File1 len + File1 stream content + File2 len + File2 stream content + ....
示例代码:
result = new ExportResult_C()
{
PackedStudy = packed.ToArray() ,
Stream = new MemoryStream()
};
string[] zipFiles = Directory.GetFiles(zipRoot);
foreach (string fileN in zipFiles)
{
MemoryStream outFile = new MemoryStream(File.ReadAllBytes(fileN));
MemoryStream len = new MemoryStream(4);
//initiate outFile len to 4 byte push it to main stream
//Then push outFile stream to main stream
//Continue and do this for another file
}
//For test Save stream to file(s)
这是个好主意吗?真的不知道该注释如何成为代码行。
is it good idea? really don't know how that comments can be lines of code.
预先感谢。
推荐答案
尝试使用系统
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
byte[] testMessage = Encoding.UTF8.GetBytes("The quick brown fox jumped over the lazy dog");
MemoryStream outFile = new MemoryStream();
BinaryWriter writer = new BinaryWriter(outFile);
for (int i = 0; i < 10; i++ )
{
writer.Write(BitConverter.GetBytes(testMessage.Length), 0, 4);
writer.Write(testMessage, 0, testMessage.Length);
}
writer.Flush();
outFile.Position = 0;
BinaryReader reader = new BinaryReader(outFile, Encoding.UTF8);
while (outFile.Position < outFile.Length)
{
int size = reader.ReadInt32();
byte[] data = reader.ReadBytes(size);
}
}
}
}
这篇关于一个流中有多个文件,自定义流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文