黑马程序员技术交流社区

标题: 文件切割问题 [打印本页]

作者: 兜兜转转    时间: 2013-8-14 09:38
标题: 文件切割问题
本帖最后由 兜兜转转 于 2013-8-15 08:58 编辑

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

作者: 薛鹏鹏    时间: 2013-8-14 10:05
代码呢?
作者: 杨增坤    时间: 2013-8-14 10:24
请把代码贴出来!
作者: 王靖远    时间: 2013-8-14 11:22
不知道什么原因。我加了缓冲区是可以的。
  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. }
复制代码

作者: 兜兜转转    时间: 2013-8-14 11:45
  1. <blockquote> FileInputStream fis = new FileInputStream("D:"+File.separator +"javaTest"+File.separator +"psb.jpg");
复制代码
刚发完贴,没多久发现问题所在,搞乌龙了,粗心了一把,我说怎么会多出几K,会不行呢,发现问题后,都不好意思回帖了,怕笑话。
感谢!!!

作者: 兜兜转转    时间: 2013-8-14 11:50
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,会不行呢,发现问题后,都不好意思回帖了,怕笑话。
感谢!!!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2