我正在设备上运行服务,并希望将文件发送到该服务。很简单,但我想发送的文件来自一个zip文件,这是对我来说变得复杂的地方。 我试图通过发送内部文件的流到设备来实现我的目标,但后来我不得不意识到,我发送了12个字节(顺便说一下是内部文件名的长度 - 扩展名 - 巧合?)超过GetEntry()。长度将指示。ZipArchiveEntry的长度是否返回错误的大小?
我完全错过了什么,或者我做错了什么? 这是当前的代码,因为它是(注:客户端是在这一点上有效的和连接的TCP套接字):
System.IO.Compression.ZipArchive zfile = System.IO.Compression.ZipFile.Open(_STR_FILENAME, System.IO.Compression.ZipArchiveMode.Read);
System.IO.Compression.ZipArchiveEntry zentry = zfile.GetEntry(_STR_FWNAME);
using (Stream fs = zentry.Open())
{
using(NetworkStream ns = new NetworkStream(client))
{
int i, counter = 0;
while((i = fs.ReadByte()) != -1)
{
ns.WriteByte((byte)i);
counter++;
}
Console.WriteLine("BYTES: " + counter);
Console.WriteLine("LENGTH FILE: " + zentry.Length);
}
}
我没有看到这个错误,但我没有动机去搜索,因为你可以使用fs.CopyTo(ns)。 – usr 2014-11-03 11:55:01
sw未使用。删除它。 – usr 2014-11-03 11:55:22
@usr删除了未使用的streamwriter以及未使用的缓冲区。感谢指出这一点。还要感谢CopyTo-Approach,但仍然是一个问题 - 为什么fs的长度与Entry.Length的长度没有相同? – Daniel 2014-11-03 12:09:37