java文件上传用commons-fileupload设置缓存临时文件的什么意思,有人还说Java虚拟机分配到的内存只有1
java文件上传用commons-fileupload设置缓存临时文件的什么意思,有人还说Java虚拟机分配到的内存只有100多兆,所以更应该设置临时文件,因为上传的文件...
java文件上传用commons-fileupload设置缓存临时文件的什么意思,有人还说Java虚拟机分配到的内存只有100多兆,所以更应该设置临时文件,因为上传的文件一般都很大,我知道的是commons-fileupload大致原理不就是分析请求提信息,把文件流提取出来嘛,就像平时小demo里的io流操作,不就是写一个输入流输出流,然后就写进去了,我们也没有设置什么缓存什么临时文件的呀?我现在在自学Java,所以问了这么水的问题,别介意呀,
展开
1个回答
展开全部
肯定和虚拟机内存有关啊!你是用io流来读写数据,那么内部肯定要为了效率使用Buffer包装流来缓存吧,假如现在要上传一个电影2g,你不设置缓存一次性上传整个文件,java虚拟机内存总共就那么大点(一般不设置只有64M)肯定要爆啊!,你平时的小Demo都只有几kb肯定不用缓存也行啦!
追问
缓冲区的概念懂了,临时文件又是什么意思呢?读取上传的文件不是要先经过内存再到达硬盘吗?二临时文件也是在硬盘中,如果是把超过缓冲区的部分溢出到硬盘中的临时文件中(想必待会再读到内存中,进而读到硬盘中的目的文件中),还不如直接溢出到目的文件中呢?他这里的临时文件什么意思呢
追答
首先你要对内存和硬盘这两个概念有理解!买电脑时,内存2g,硬盘却有150g,现在你要传一个高清电影,有4g大小,那么你的2g内存是不可能一次把这个电影都读取的,你肯定要把这个4g电影分成很多小份,假使是500m一份,那么总共是四份,你现在先是内存读取一份,然后保存到硬盘上,那么问题来了,你保存的这一份500m数据是什么呢?这就是临时文件!你这500m是你电影的一部分,但是又不完整,内存又不能一直装着,那么只能先写入硬盘上,然后等待读取另外三分500m,等到整部电影都读取了,之后肯定就能在硬盘上打开这个电影文件了。这个过程无法忽略临时文件!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |