Java从URL读取JPG文件

Java从URL读取JPG文件,java,url,jpeg,Java,Url,Jpeg,我得到了这个错误: 线程“main”java.lang.IndexOutOfBoundsException中出现异常 位于java.io.ByteArrayOutputStream.write(未知源) 我想先将这个jpeg文件读入bytearrayoutputstream,然后再写入文件 对不起,我的英语不好。试试这个 public class Socket { public Socket() { try { URL url = new URL(

我得到了这个错误: 线程“main”java.lang.IndexOutOfBoundsException中出现异常 位于java.io.ByteArrayOutputStream.write(未知源)

我想先将这个jpeg文件读入bytearrayoutputstream,然后再写入文件

对不起,我的英语不好。

试试这个

public class Socket {
    public Socket() {
        try {
            URL url = new URL("http://images2.layoutsparks.com/1/56178/castle-stone-window-grey.jpg");
            InputStream in = url.openStream();
            BufferedInputStream bin = new BufferedInputStream(in); 


            ByteArrayOutputStream bout = new ByteArrayOutputStream(4096);
            byte[] okunan = new byte[4096];

            while(in.read()!= -1){
                bout.write(okunan, 0, in.read());

            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用
ImageIO
API

BufferedImage img = ImageIO.read(new URL("http://images2.layoutsparks.com/1/56178/castle-stone-window-grey.jpg"));

检查并获取信息你是说

BufferedImage img = ImageIO.read(new URL("http://images2.layoutsparks.com/1/56178/castle-stone-window-grey.jpg"));

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", bout);

使用javax.imageio.imageio而不是java.io包的简单InputStream

看看这里,我想这会很有帮助:

try {
        URL url = new URL("http://images2.layoutsparks.com/1/56178/castle-stone-window-grey.jpg");
        InputStream in = url.openStream();
        BufferedInputStream bin = new BufferedInputStream(in); 


        ByteArrayOutputStream bout = new ByteArrayOutputStream(4096);
        byte[] okunan = new byte[4096];

        while(in.read()!= -1){
            in.read(okunan);
            bout.write(okunan);

        }

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }