我正在設備上運行服務,並希望將文件發送到該服務。很簡單,但我想發送的文件來自一個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