黑马程序员技术交流社区
标题:
同样的代码,为什么运行结果不一样,晕
[打印本页]
作者:
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