一般情况下,打比方,你有个100MB的文扮耐件,你并不是一次读完,而是分块,10MB一次的读取备悉,所以文件大小不会有限制。
1.不是必须的。但创建字节数组,可提高对文件的 读取效率字节数组起到一个缓存的作用
2, 大小不可随意。
1. 大小不可超过64M,因为JVM默认的虚拟机大小就是64M//也没人这么干
2. 最好取1024的整数倍 //因为文件都精确到KB
于大的文件可用1024*1024为大小//1M
3.先宴握竖得到文件的大小,再用赋值皮前数组大小与之相等即可,但文件不能过大。(我忘了这方法....)
更新后:
当前晌大的流 *** 作java都提供了自带的缓冲区
eg: BufferedReader、BufferedWrite、BufferedOutputStream、BufferedInputStream
使用这些就都不需要用字节数组
而BufferedReader中有一个readLine()方法,可一次读取一行效率还可以
其中的某些方法还具有跨平台性
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<meta http-equiv="Content-Type" content="text mlcharset=windows-31j">
<title>Insert title here</title>
<script type="text/javascript">
var isIE = /msie/i.test(navigator.userAgent) &&!window.opera
var sizeLabel = ["B", "KB", "MB", "GB"]
function fileChange(target) {
var fileSize = 0
if (isIE &&!target.files) {
var filePath = target.value
var fileSystem = new ActiveXObject("Scripting.FileSystemObject")
var file = fileSystem.GetFile (filePath)
fileSize = file.Size
} else {
fileSize = target.files[0].size
}
displayFileSize(fileSize)
}
function displayFileSize(size) {
var fileSize = document.getElementById("fileSize")
fileSize.innerHTML = calFileSize(size)
}
function calFileSize(size) {
for (var index = 0index <sizeLabel.lengthindex++) {
if (size <1024) {
return round(size, 2) + sizeLabel[index]
}
size = size / 1024
}
return round(size, 2) + sizeLabel[index]
}
function round(number, count) {
return Math.round(number * Math.pow(10, count)) / Math.pow(10, count)
}
</script>
</head>
<body>
<div>
<input type="file" onchange="fileChange(this)">
</div>
<div id="fileSize">
</div>
</body>
</html>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)