java从服务器下载文件时,为什么必须先创建一个和服务器文件大小相同的临时文件?

java从服务器下载文件时,为什么必须先创建一个和服务器文件大小相同的临时文件?,第1张

这是习惯,因为你不这样,文件大小就是在下载过程中动态变化,这不是好事。。。改变文件大小本身就有一系列对文件系统的操作,因为第一次被分配的文件位置并不一定有这么大的连续空间,增大文件大小,那么只能从别的空间找然后连接到这个文件上,逻辑上是连续的,物理上是不连续的,那么文件就在存储器上就变成分散的了,也就是分成好多碎片,在不同的位置,这对于读写来说严重影响速度。。。因为无论是硬盘还是flash都不是随机存储器,以分散就要频繁的定位。。。

最好是让文件在连续的区域内,那么你一开始就设定大小,那么系统会尽量分配到连续的存储区,

strUrl为文件地址,fileName为文件在本地的保存路径,试试吧~

public static void writeFile(String strUrl, String fileName) {

URL url = null;

try {

url = new URL(strUrl);

} catch (MalformedURLException e2) {

e2printStackTrace();

}

InputStream is = null;

try {

is = urlopenStream();

} catch (IOException e1) {

e1printStackTrace();

}

OutputStream os = null;

try {

os = new FileOutputStream( fileName);

int bytesRead = 0;

byte[] buffer = new byte[8192];

while ((bytesRead = isread(buffer, 0, 8192)) != -1) {

oswrite(buffer, 0, bytesRead);

}

Systemoutprintln("下载成功:"+strUrl);

} catch (FileNotFoundException e) {

eprintStackTrace();

} catch (IOException e) {

eprintStackTrace();

}

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java从服务器下载文件时,为什么必须先创建一个和服务器文件大小相同的临时文件?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情