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# 如何在Windows应用商店应用程序中写入二进制文件?_C#_Windows Store Apps - Fatal编程技术网

C# 如何在Windows应用商店应用程序中写入二进制文件?

C# 如何在Windows应用商店应用程序中写入二进制文件?,c#,windows-store-apps,C#,Windows Store Apps,我正在尝试实现StreamSocket通信,服务器现在正在向我发送字节为[]的“.zip”文件。内存中的字节[]看起来不错(字节数与服务器中的原始.zip文件相同),但当我将这些字节保存到文件中时,解压程序会说它“已损坏” 我尝试了几种选择,但没有一种对我有效: 一, 二, 三, 四, 如果有人有一些新想法,请分享 问候。什么叫“他们都不为我工作”?你收到了什么错误,你期望什么?所有的选项都创建了一个字节在里面(1MB大小)的文件,但是当我尝试解压时,这个文件就被破坏了。那么,你在十六进制编辑器

我正在尝试实现StreamSocket通信,服务器现在正在向我发送字节为[]的“.zip”文件。内存中的字节[]看起来不错(字节数与服务器中的原始.zip文件相同),但当我将这些字节保存到文件中时,解压程序会说它“已损坏”

我尝试了几种选择,但没有一种对我有效:

一,

二,

三,

四,

如果有人有一些新想法,请分享


问候。

什么叫“他们都不为我工作”?你收到了什么错误,你期望什么?所有的选项都创建了一个字节在里面(1MB大小)的文件,但是当我尝试解压时,这个文件就被破坏了。那么,你在十六进制编辑器中打开了结果了吗?是否某些字节未正确存储,或者通过
StorageFile
或其他方式创建的文件上是否有额外的头?应用程序创建的文件到底有什么问题?根据您目前提供给我们的信息“解压程序说文件无效”,您可能从服务器获取了虚假数据。@Ben Voigt在您发表评论前几秒钟,我意识到我没有进行任何十六进制比较。完成后我会做一些更新。好的。。所以我比较了两个文件,它们是不同的。在检查了整个协议一段时间后,我发现服务器希望开始发送文件时有一个偏移量,而我一直在发送上一个接收到的文件的大小,因此.zip文件的第一部分从未发送过。现在,修复了这个问题,我尝试使用我使用的第一个选项保存文件,效果很好。我不知道该如何结束这个问题,因为这个问题有答案。
var file = await StorageFile.CreateFileAsync();
using(var stream = await file.OpenStreamForWriteAsync())
{
    stream.Write(myBytes, ...);
}
var file = await StorageFile.CreateFileAsync();
await FileIO.WriteBytesAsync(file, myBytes);
var file = await StorageFile.CreateFileAsync();
using (var fileStream = await file.OpenStreamForWriteAsync())
{
    var sessionData = new MemoryStream(myBytes);
    sessionData.Seek(0, SeekOrigin.Begin);
    await sessionData.CopyToAsync(fileStream);
}
var file = await StorageFile.CreateFileAsync();
using (var writer = new BinaryWriter(await file.OpenStreamForWriteAsync())
{
    writer.WriteBytes(myBytes);
}