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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 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 数组中,这是在控制循环次数的语句,怎么控制的三次,不解?

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

3 个回复

正序浏览
切割图片,开始位置Start_X,Start_Y,切图的大小,Windth,Height  
ImageFilter cropFilter= new CropImageFilter(Start_X,Start_Y,Windth,Height);

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
你的图片有那么大么..人家的图片有几m。你一片就是一M,如果本来图片就没上M就是一片么。while((len=fis.read(buf))!=-1)就是将流中的数据读入byte数组,len是读入的字节数。之所以能控制循环就是因为,当读完时,read读的结果就是-1。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 木、易m 于 2013-7-15 17:33 编辑

估计是你的图片不够1M,所以只能切成一次,因为你的数组一次是读取1M的字节,所以就只能循环一次,你试着看下你的图片多大,然后对数组定义成可以循环三次的大小,看一下,估计就有三个文件出来啦

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马