请看看我这个上传文件,为什么上传后的文件比上传前要大呢,我的文件是2.2兆,上传后变成2.9兆了,我的jdk是1.6版本,请高手看看啊,谢谢
byte[] buffer = new byte[1024000];
BufferedInputStream bufferedInputStream = new BufferedInputStream(file.getInputStream());
// bufferedInputStream.available()
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pathandname)); while (bufferedInputStream.read(buffer) != -1) {
bufferedOutputStream.write(buffer);
} bufferedOutputStream.flush();
bufferedOutputStream.close();
bufferedInputStream.close();
byte[] buffer = new byte[1024000];
BufferedInputStream bufferedInputStream = new BufferedInputStream(file.getInputStream());
// bufferedInputStream.available()
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(pathandname)); while (bufferedInputStream.read(buffer) != -1) {
bufferedOutputStream.write(buffer);
} bufferedOutputStream.flush();
bufferedOutputStream.close();
bufferedInputStream.close();
解决方案 »
- 各位大侠,麻烦看这个程序的结果为什么这样
- 求教线程的问题
- 大家不知道有没有碰到过,由编译器自动生成的A.class 你用java A不能执行,非得用java a (按理说这里区分大小写的)
- 单例模式中,懒汉式和饿汉式的区别
- 讨论接口(interface)有什么作用.
- 一个关于Java程序关于执行顺序的问题~~~~~~先谢过各位了!
- 怎么样获得INSERT\NUM\CAPS LOCK这三个键的状态?
- 如何判断一个java程序的另一个实例正在运行?
- 安装了一个软件后在哪里运行,一般情况下默认安装会被安装到哪个路径下。linux下的可执行文件有那些。
- 请评价-->关于VJ++和JDK
- LinkedBlockingQueueo类中的take方法执行后不释放内存,怎么办
- postgres里面有个表user,user表里有一个字段username,当username为a_b时,我要把所以带'_'的字符查出来,要怎么查呀.
int k = 0;
while ((k = bufferedInputStream.read(buffer)) != -1) {
bufferedOutputStream.write(buffer,0,k);
}
每次读取的长度都是1024000,换成byte[] buffer = new byte[128];差距会小很多。
将指定byte数组中从偏移量off开始的len个字节写入此缓冲的输出流。1楼已经给出了解决办法了,因为你无法保证最后一次是否能读满数组,所以需要获取读取的个数,并且设置写入的偏移量和个数
偏移量自然为0,因为从数组的头开始,而个数就是read的返回值
while ((k = bufferedInputStream.read(buffer)) != -1) {
bufferedOutputStream.write(buffer,0,k);
}试试一楼给的代码