黑马程序员技术交流社区
标题:
关于拷贝图片用exlipse运行出现错误
[打印本页]
作者:
刘茂林
时间:
2013-5-19 11:52
标题:
关于拷贝图片用exlipse运行出现错误
本帖最后由 刘茂林 于 2013-5-19 14:54 编辑
import java.io.*;
import java.lang.*;
public class Copypic
{
public static void main(String[] args)
{
FileInputStream fis = null;
FileOutputStream fos = null;
try
{
fis = new FileInputStream("test.jpg");
fos = new FileOutputStream("copy.jpg");
byte[] buf = new byte[1024 * 5];
int len = 0;
while ((len = fis.read(buf)) != 0)
{
fos.write(buf, 0, len);
}
} catch (IOException e)
{
System.out.print("复制文件失败" + e.toString());
}
finally
{
if (fis != null)
{
try
{
fis.close();
} catch (IOException e)
{
System.out.println("读取关闭失败"+e.toString());
}
}
if (fos != null)
{
try
{
fos.close();
} catch (IOException e)
{
System.out.println("读取关闭失败"+e.toString());
}
}
}
}
复制代码
不知道怎么回事,运行的时候出现数组越界,但实际上复制成功了 求解答??
作者:
逸盏清茶
时间:
2013-5-19 12:48
本帖最后由 逸盏清茶 于 2013-5-19 12:51 编辑
最后少个大括号 while ((len = fis.read(buf)) != 0) !=-1
作者:
萌小子
时间:
2013-5-19 12:48
你的while循环有错误,读到文件末尾的时候返回的是-1,而不是0.所以应该为
while ((len = fis.read(buf)) != -1)
{
fos.write(buf, 0, len);
}
作者:
刘茂林
时间:
2013-5-19 14:53
王盟盟 发表于 2013-5-19 12:48
你的while循环有错误,读到文件末尾的时候返回的是-1,而不是0.所以应该为
while ((len = fis.read(buf)) ! ...
多谢。。汗 犯了简单错误
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2