黑马程序员技术交流社区

标题: 同样的代码,为什么运行结果不一样,晕 [打印本页]

作者: qmlovewhr    时间: 2013-7-15 17:25
标题: 同样的代码,为什么运行结果不一样,晕
本帖最后由 杨兴庭 于 2013-7-16 17:48 编辑

import java.io.*;
import java.util.*;
class SplitFile
{
public static void main(String[] args)throws IOException
{
  splitFile();
}
public static void splitFile()throws IOException
{
  FileInputStream fis=new FileInputStream("E:\\1.jpg");
  FileOutputStream fos=null;
  byte[]buf=new byte[1024*1024];
  int len=0;
  int count=1;
  while((len=fis.read(buf))!=-1)
  {
   fos=new FileOutputStream("E:\\splitfiles\\"+(count++)+".part");
   fos.write(buf,0,len);
   fos.close();
  }
  fis.close();
}
}
为什么老毕把一张图片切成了三份,而我却切成了一片,代码好像也一样呀,就是图片路径不一样,可这是原因吗?另外while((len=fis.read(buf))!=-1), 从此输入流中将最多 buf.length 个字节的数据读入一个 byte 数组中,这是在控制循环次数的语句,怎么控制的三次,不解?

作者: 木、易m    时间: 2013-7-15 17:32
本帖最后由 木、易m 于 2013-7-15 17:33 编辑

估计是你的图片不够1M,所以只能切成一次,因为你的数组一次是读取1M的字节,所以就只能循环一次,你试着看下你的图片多大,然后对数组定义成可以循环三次的大小,看一下,估计就有三个文件出来啦
作者: 草貌路飞    时间: 2013-7-15 17:45
你的图片有那么大么..人家的图片有几m。你一片就是一M,如果本来图片就没上M就是一片么。while((len=fis.read(buf))!=-1)就是将流中的数据读入byte数组,len是读入的字节数。之所以能控制循环就是因为,当读完时,read读的结果就是-1。
作者: 付龙    时间: 2013-7-16 12:29
切割图片,开始位置Start_X,Start_Y,切图的大小,Windth,Height  
ImageFilter cropFilter= new CropImageFilter(Start_X,Start_Y,Windth,Height);




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