LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1125|回复: 12

怎样生成一个有大小的文件?

[复制链接]
发表于 2005-3-7 16:43:00 | 显示全部楼层 |阅读模式
怎样生成一个类似BT和Flashget软件,
还没下载结束时的文件,
他们里面是空的,或者说数据很少,
但是这些文件的大小并不小。

如果一个正在下载的文件是100M,
即使还没有下载完,
它的大小也是100M。  :ask
发表于 2005-3-7 17:01:10 | 显示全部楼层
...
int size = 100*1024*1024;
while(i-->0)
  fos.write(0);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 20:28:13 | 显示全部楼层
哦??
难道就是写一堆"0"吗?
回复 支持 反对

使用道具 举报

发表于 2005-3-7 20:46:51 | 显示全部楼层
好像没有什么其他方法啦。
回复 支持 反对

使用道具 举报

发表于 2005-3-7 20:59:23 | 显示全部楼层
fseek
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 21:14:15 | 显示全部楼层
我要生成一个6、7百M的空文件,

用 popeyelin 兄 的方法速度太慢了,
yangtou 兄的方法,我以前倒是用过,不过现在使用Java就没法用了。

但是yangtou 兄提醒了我,
我使用RandomAccedssFile对象的seek(long)方法和setLength(long),
可是,也太慢了。

真不知道Azureus是怎么实现快速创建空文件的。

不知还有什么好方法吗? :help
回复 支持 反对

使用道具 举报

发表于 2005-3-7 22:09:53 | 显示全部楼层
dd of=yourfile bs=1024 seek=1000000 count=0
回复 支持 反对

使用道具 举报

发表于 2005-3-7 23:27:14 | 显示全部楼层
不知道试试
writeBytes(byte b[], int off, int len)每次写入一个block会怎么样?可以多次变化block的大小,看看有没有什么影响。
回复 支持 反对

使用道具 举报

发表于 2005-3-8 01:07:05 | 显示全部楼层
我只是说一个方法而已。你可以先用一个buffer。我以前是生成1G的临时文件,一次buffer是128M,很快。如果你内存大,缓存开越大越好。因为可以减少系统IO的次数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-8 07:52:20 | 显示全部楼层
Post by popeyelin
我只是说一个方法而已。你可以先用一个buffer。我以前是生成1G的临时文件,一次buffer是128M,很快。如果你内存大,缓存开越大越好。因为可以减少系统IO的次数


您所指的Buffer 是指的BufferedInputStream还是什么? :ask

您当时生成1G空文件所用的时间大约有多长呀?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表