紧急SOS~如何写二进制文件?

crackzzy 2003-08-24 05:59:01
我有一个类被序列化了
MemoryStream ms=new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms,mapinfo);
现在ms里存放的就是序列化好的二进制流。
请问我要怎么样把它写到一个二进制文件里呢?
如果可以的话请顺便给出把二进制文件读到一个MemoryStream里的代码~
我对文件操作这一块还不太熟悉,请尽可能给出详细代码,谢谢~~
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
原来如此,不过看来我得好好补一下E文了,你上面的那个单词underlying我琢磨了半天不懂是什么意思,晕~~~~~~~~。
后来在金山词霸+SDK的帮助下才大概了解。哎~~高中没好好学英语,惭愧啊~~
帖子先放两天,过两天一起结了吧~
saucer 2003-08-24
  • 打赏
  • 举报
回复
mostly same, but ToArray() returns a copy while GetBuffer returns the underlying byte array
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
谢谢思归,关于读写二进制文件的问题已经解决了。
不过我这里还有一个小疑问。
你在上面有一句
byte[] blist=ms.ToArray();
这条语句是把MemoryStream对象转换成字节数组吧。
可是我在SDK上还看到MemoryStream对象有另一个方法GetBuffer。
请问思归这个ToArray方法和GetBuffer方法有什么差别?
感觉起来好象都差不多,都是根据一个MemoryStream对象返回一个字节数组。
但是我想既然。NET提供了这两个方法一定是有原因的,还请思归帮我解释一下我今天第三个问题内的小问题,呵呵~~~(和你一样,通宵写了一夜程序~)
saucer 2003-08-24
  • 打赏
  • 举报
回复
use System.IO.FileStream

byte[] blist = ms.ToArray();
FileStream myFileStream = new FileStream( Server.MapPath("log.dat"), FileMode.OpenOrCreate, FileAccess.Write );
myFileStream.Write(blist,0,blist.Length );


but you can directly write into a file

BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(myFileStream,mapinfo);

do the similar
FileStream myFileStream = new FileStream( Server.MapPath("log.dat"), FileMode.Open, FileAccess.Read );
BinaryFormatter bf = new BinaryFormatter();
object o = bf.Deserialize(myFileStream);

代码下载地址: https://pan.quark.cn/s/a4b39357ea24 在Android系统上达成蓝牙与便携式打印机的连接,通常包含了一系列技术要素和操作流程。名为"Android连接蓝牙打印机(cpcl指令)Demo完整版"的项目提供了一个全面的解决方案,它运用了专门的打印机指令集——CPCL(Control Program for ClearType Language),该指令集主要用于操控打印作业,尤其适用于标签和面单的打印。以下是关于此主题的详尽阐述: 1. **蓝牙传输打印**:Android平台内置了`BluetoothAdapter`类别用于管理蓝牙数据交互。必须确认设备已启用蓝牙功能,随后对邻近的蓝牙设备进行探测。`startDiscovery()`函数负责启动搜寻过程,而`getBondedDevices()`能够列出已建立配对的设备。 2. **建立与便携打印机的联系**:当识别出目标打印机后,可借助`BluetoothDevice`类中的`createRfcommSocketToServiceRecord()`函数构建RFCOMM(蓝牙串行端口协议)的通道。一旦连接建立成功,便可通过`connect()`函数与打印机展开信息交流。 3. **CPCL编码**:CPCL是一种与ESC/POS类似的页面描述性语言,它用于调控打印机的输出格式、文字样式、条形码等。比如,`^PJL`用于设定页面布局,`^FO`指定输出位置,`^A`设定字体尺寸,`^BC`生成条形码,`^PG`执行分页操作。在Android程序中,需将CPCL编码转为文本格式,再经由蓝牙通道传输至打印机。 4. **博思达软件开发工具包**:博思达作为一家著名的打印...

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧