A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. FileStream fs = new FileStream("d:\\temp.txt",FileMode.Open);
  2.             StreamReader reader = new StreamReader(fs,Encoding.Default);
  3.             char[] buffer = new char[1024];
  4.             int length = reader.Read(buffer, 0, buffer.Length);
  5.             char[] data = new char[length];
  6.             Buffer.BlockCopy(buffer, 0, data, 0, length);
复制代码
这里data的实际长度就不是length,什么问题

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

6 个回复

倒序浏览
这个是图片

1.png (10.63 KB, 下载次数: 32)

1.png
回复 使用道具 举报
奇怪了,我把你的代码原封不动的复制过来,并不会出现你说的情况啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你试着读一下文件,看看,读取出来的文件,少了一部分
回复 使用道具 举报
学习了谢谢swrrew
回复 使用道具 举报
郭耀强 发表于 2012-4-24 10:59
这个是图片

你读取的是一个char类型的字符为:Length,而拷贝的buffer,是以string类型,拷入数组中的,一个string字符串占了相当于两个char类型的字符。应该是那类型问题。试试把char类型换成string类型的数组试试
回复 使用道具 举报
首先StreamReader读取数据需要的类型是char[]类型,所以我用一个char[]类型的数组来接收,其次,应为接收的这个数组长度并不是流的实际长度,所以我又定义了另外一个char[]数组,把实际的流的数组填充到这个数组中,过程中我用了Buffer.BlockCopy()方法来转换,但把接收数据的数组转换到实际数据的数组中,出现了错误,现在是转换过来的数据少了,就转换了34个char字符,还有35个都是用\0填充了,你上述的意思我不明白,举个例子吧

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马