请人帮忙 一个流类怎么使用? ----在线等。。。。。。。。。。。(50分)

  • 主题发起人 主题发起人 guofengdelphi
  • 开始时间 开始时间
我认为你的让它到某个位置停下来的想法有问题,而只能是把大块的数据读到缓冲区后,不处理某个位置以后的数据。
我只是直说,有不对的地方欢迎讨论。
 
其实,我现在 有个 难题,你写的那个可以实现文件 的拷贝,
我这个 问题是:一个文件,我想把它最后的144字节给去掉。然后它前面 的生成一个新文件,(后面144字节是没用的),但缓冲区我也不想定义的太小(buf:1024,如果是144,问题也好解决,)按照你的方法,每次读1024,并不能很准确的控制剩余144字节的地方停下来。(如果,buf:144,也许可以)
你再帮我想想?
谢谢
 
就说我的问题,按你的思路,最后一次把数据读到缓冲区里长度不够144字节,也就是说
读数据需n次,第n-1次,缓冲区里已经包含最后144字节里的一部分数据,然后,第n次,
缓冲区里读的不够144字节,你怎么取舍?
我也是直说,愿和你讨论这个问题
 
:)
这个问题好解决啊!你看看这样是不是好了:
len[FILE_BLKS-1] = (int)file.length() - posbegin
[FILE_BLKS-1];
-> len[FILE_BLKS-1] = (int)file.length() - posbegin
[FILE_BLKS-1] - 144;
 
-> 最后一次把数据读到缓冲区里长度不够144字节
不用担心,那就在"最后一次"的上一次结束了。也就是说不存在这样的忧虑。
 
:)
不好意思,还有点问题,
假如,文件的长度很小,最后一个线程的缓冲区一下把数据读出来(已经包括144里的数据),
然后,写到新文件里,然后,才判断
int readBytes = in.read(buf);
while (sumReadBytes < bytesToRead){
sumReadBytes += readBytes;
out.write(buf, 0, readBytes);
readBytes = in.read(buf);
是不是,就有点问题了。。。
 
我做得不够细心,又一次多谢指出。
这样吧,把 out.write(buf, 0, readBytes) 改为
out.write(buf, 0, Math.min(readBytes, bytesToRead));
这下行了吧?
 
好像是可以,我在试试
多谢这么长时间,一直帮我解决问题。
50分全给你
还有个小小请求,不知,可不可以?
就是,能和你交个朋友吗?以后共同讨论、研究Java方面的问题,
同时,都从中得到提高。
怎么样,你考虑一下,等着你的回复。。。。。。。
 
好的,大家水平差不多,一起讨论讨论。:)
我的 mail: smnyx@21cn.com/smnyx@sina.com,给我发邮件时,用 DFW 上面的名字就可以。QQ我不能用。
 
你常用哪个mail,我的mail是:guofengboss_2002@163.com
 
都总在收信,:)
我现在看看你的未答问题。希望能帮得上点忙,不帮倒忙就行,是吧。^_^
 
你太客气了,我觉着你的水平很高。学习都来不及的
感觉着,没有你搞不定的问题,我以后得向你学两招,
不会,不教把?^_^
 
不会的。直到说得没话说为止。
好了,不在这里灌水了。遵守规则。
 
后退
顶部