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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马_位志国 中级黑马   /  2013-3-6 14:18  /  1206 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马_位志国 于 2013-3-6 14:19 编辑

既然可以把文件分割,也可以把文件合并,那么关于从网上下载的文件,是不是先把该文件分割成好几份碎片,然后再把这些碎片合并成一个文件?

为什么有的只有一个临时文件,是不是隐藏了? 还是没有显示出来???

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
一般的网上下载并没有分割成碎片
而是用了对象 Randomaccessfile 里面的方法
例如用了 seek()方法 skipBytes(int n)


seek
public void seek(long pos)
          throws IOException设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。

参数:
pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。

读取的时候可以多线程,用skipBytes() 跳着字节数读取一个文件
写入的时候 用seek()方法多线程写入一个文件。
这样下载文件就会比较快些。

具体用法可参考毕老师的 Java基础视频教程第21天-03-IO流(RandomAccessFile)

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

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