A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 兜兜转转 中级黑马   /  2013-8-14 09:38  /  1513 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 兜兜转转 于 2013-8-15 08:58 编辑

今天在练习毕老师的那个文件切割例子时,当时老师没用字节缓冲流去包装FileInputStream 和FileOutputStream,
然后自己练习的时候,自己就想用字节缓冲流去包装,发现没有用,我已经加了flush(),将字节缓冲流包装拿掉就好了
。帮忙看看是啥子问题呢?

评分

参与人数 1黑马币 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

5 个回复

倒序浏览
代码呢?
回复 使用道具 举报
请把代码贴出来!
回复 使用道具 举报
不知道什么原因。我加了缓冲区是可以的。
  1. package test;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. public class SplitFile {

  9.         public static void main(String[] args) throws IOException {
  10.                 BufferedInputStream fis = new BufferedInputStream( new FileInputStream("1.avi"));
  11.                 byte[]buf = new byte[1024*1024*5];
  12.                 int len = 0;
  13.                 BufferedOutputStream fos = null;
  14.                 int count = 1;
  15.                
  16.                 while((len = fis.read(buf))!=-1){
  17.                         fos = new BufferedOutputStream(new FileOutputStream((count++)+".part"));
  18.                         fos.write(buf,0,len);
  19.                        
  20.                         fos.close();
  21.                 }
  22.                 fis.close();
  23.                
  24.         }

  25. }
复制代码
回复 使用道具 举报
  1. <blockquote> FileInputStream fis = new FileInputStream("D:"+File.separator +"javaTest"+File.separator +"psb.jpg");
复制代码
刚发完贴,没多久发现问题所在,搞乌龙了,粗心了一把,我说怎么会多出几K,会不行呢,发现问题后,都不好意思回帖了,怕笑话。
感谢!!!
回复 使用道具 举报
package com.IO_Practice;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class SpiltDemo
{
        public static void main(String[] args) throws Exception
        {
                 FileInputStream fis = new FileInputStream("D:"+File.separator +"javaTest"+File.separator +"psb.jpg");
                 BufferedInputStream bis = new BufferedInputStream(fis);
                 BufferedOutputStream bos = null;
                 FileOutputStream fos = null;
                 byte data[] = new byte[1024*10];
                 int length = 0;//这里定义了一个length
                 int part = 1;
                 while( (length = bis.read(data)) != -1)
                 {
                          fos = new FileOutputStream("D:"+File.separator +"javaTest"+File.separator +(part++)+".part");
                          bos =  new BufferedOutputStream(fos);
                          bos.write(data,0,data.length);//这里写的却是data.length,都怪定义变量没原则,没回避导致,找了很久,才发现这,就是搞乌龙。
                 }
                 bis.close();
                 bos.close();
        }

}



可能是上夜班,眼睛太酸,刚发完贴,没多久发现问题所在,搞乌龙了,粗心了一把,我说怎么会多出几K,会不行呢,发现问题后,都不好意思回帖了,怕笑话。
感谢!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马