C# 乱码、StreamWriter?StreamReader? 直接把数据放在buffer里就行,为何还要用一个临时的文件来保存数据? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将字节流(byte[]),而不是字符串存下(内存或文件)。因为有些编码需要2个或以上的字节来放一个单字,随意进行字符串转换就可能在错误的地方将多个字节间切开,造成乱码。 如果整个传输过程和写入过程编码都统一的话,是不是可以考虑这个情况也就是,一个完整的字符串,被你接收的时候,鲁莽的切断了,然后写入的时候,并没有考虑实际的长度。比如,假设对方发送了一个 500个汉字的字符串,通过GBK编码成了 1000 个字节。然后你调用 Receive 的缓存为 600 字节,那么,第一次调用收到了600 字节,写入了临时文件,第二次,实收了400字节,这个时候,你写入临时文件了多少字节?还有一个问题是,既然你要缓存,为嘛要把每次先转成字符串,再写入临时文件?另外,你是如何判断字符串接收完成了,有没有长度前缀?如果字符串数据不是太大,可以直接缓存到内存中,减少对磁盘的访问。 发完帖子之后, 我就更改将字节流(byte[])存入文件,目前测试几下是没有问题。 我这个是数据主要是SQL查询的结果。 如果加上些二进制文件的数据,还是存储在文件上比较妥当吧? 我想我的问题,主要是存在于 存入的是字符串,而不是BYTE数组,我在读取的时候,发现读到了一条数据的标识,我就会去清空临时文件。我现在的做法是,每次写入数据之后,用AutoResetEvent 发个信号,让读线程去读数据,然后判断是否收到完整的数据,没有收到就不停的等待信号才去读取, 直到读到完整的数据,我就去清空临时文件。有没有好的解决方案,我觉得这个操作还是比较耗时的。 用FileStream,不要用StreamWriter和StreamReader! 所以你干脆定义个全局的datatable存放数据还更简单 for 逐条执行 c#中奇怪的SQL语句调用 各位高手,问一个高强度问题:如何指定IP地址范围生成该范围内的所有IP地址。 TCP网络通信程序使用C#2005调试总是出错,希望有高手相助! C#(winform)如何在类中设置form的属性? 几个简单的问题 紧急求救 C# Setup Project 安装地址下txt 文件打开 请教C#两个数组找出相同的和各自不同的数值 把父类对象赋值给子类 將屬性綁定到成員變量上 c# 制作音乐播放器的话,如何实现可以把文件直接拖上去播放? PropertyGrid
因为有些编码需要2个或以上的字节来放一个单字,随意进行字符串转换就可能在错误的地方将多个字节间切开,造成乱码。
我在读取的时候,发现读到了一条数据的标识,我就会去清空临时文件。我现在的做法是,每次写入数据之后,用AutoResetEvent 发个信号,让读线程去读数据,
然后判断是否收到完整的数据,没有收到就不停的等待信号才去读取, 直到读到完整的数据,我就去清空临时文件。有没有好的解决方案,我觉得这个操作还是比较耗时的。