• java.lang.IndexOutOfBoundsException at java.io.FileOutputStream.writeBytes(Native Method)


     测试 DDN wos 的时候出现错误: 

     available : 3212
    /usr/lk/data/linkapp/ddn_1440639847758_temp
    1024
    1024
    java.lang.IndexOutOfBoundsException
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(FileOutputStream.java:260)
        at com.lk.ddn.DDNRestUtil.getData(DDNRestUtil.java:439)
        at com.lk.ddn.DDNRestUtil.main(DDNRestUtil.java:88)

    相关代码是:

        public static byte[] getData(String oid) {
            if (StringUtils.isEmpty(oid)) {
                return null;
            }
            int nFileLength = -1;
            String meta = "";
            byte[] fileData = null;
            try {
                String httpurl = "http://"+host+"/cmd/get";
                httpurl = "http://localhost/disk/myFileList.action";
                httpurl = "http://localhost/register.jsp";
                URL url = new URL(httpurl);
                HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
                httpConnection.setRequestMethod("GET");
    //            httpConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " +
    //                    "(KHTML, like Gecko) Chrome/38.0.2125.101 Safari/537.36");
                httpConnection.setRequestProperty("content-type", "application/octet-stream");
                httpConnection.setDoOutput(true);
                httpConnection.setDoInput(true);
                
                int responseCode = httpConnection.getResponseCode();
                if (responseCode >= 400) {
                    processErrorCode(responseCode);
                    return null; // -2 represent access is error
                }
                
                if (responseCode == HttpURLConnection.HTTP_OK) {
                    if (1==1) {
                        
                        
                        InputStream inputStream = null;
                        try {
    //                        inputStream = httpConnection.getInputStream();
    //                        int available = inputStream.available();
    //                        System.out.println(" available : " + available);
    //                        fileData = new byte[available];
    //                        int read = inputStream.read(fileData);
    //                        System.out.println(" read : " + read);
    //                        int read = 0;
    //                        while ((read = inputStream.read(fileData)) != -1) {
    //                            
    //                        }
                            
    //                        String contentEncoding = httpConnection.getContentEncoding();
    //                        System.out.println(" contentEncoding : " + contentEncoding);
    //                        
    //                        inputStream = httpConnection.getInputStream();
    //                        int available = inputStream.available();
    //                        fileData = new byte[nFileLength];
    //                        int read = inputStream.read(fileData);
    //                        System.out.println(" read : " + read);
    //                        while ((read = inputStream.read(fileData)) != -1) {
    //                            
    //                        }
                            
                            inputStream = httpConnection.getInputStream();
                            int available = inputStream.available();
                            System.out.println(" available : " + available);
                            
                            int offset = 0;
                            int reads;
                            int onesize = available>1024?1024:available;
    //                        fileData = new byte[nFileLength];
    //                        fis.reset();
    //                        while ((reads = inputStream.read(fileData,offset,onesize)) != -1) {
    //                            //System.out.println(new String(b));
    //                            offset += reads;
    //                            if (onesize >= available - offset) {
    //                                onesize = available - offset;
    //                                if (onesize <= 0) {
    //                                    break;
    //                                }
    //                            }
    //                        }
    //                        while ((reads = inputStream.read(fileData)) != -1) {
    //                            //System.out.println(new String(b));
    //                            offset += reads;
    //                        }
                            
    
                            
                            String downlowdPath = getTempFileDownlowdPath();
                            System.out.println(downlowdPath);
                            FileOutputStream fos = new FileOutputStream(downlowdPath);
                            int read = 0;
                            
                            int off = 0;
                            available = inputStream.available();
                            byte[] b = new byte[1024];
                            while ((read = inputStream.read(b))!= -1) {
                                System.out.println(read);
                                fos.write(b,off,read);
                                off += read;
                            }
                            if (b != null) {
    //                            fos.write(b);
                            }
                            System.out.println("readed : " + read);
                            inputStream.close();
                            fos.flush();
                            fos.close();
    //                        
                        } catch (IOException e) {
                            e.printStackTrace();
                        } finally {
                            if (inputStream != null) {
                                inputStream.close();
                            }
                        }
    
                    }
                }
                
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return fileData;
            
        }

    为什么总是不行呢???

    这样的简单流操作、、

  • 相关阅读:
    爬取某人的微博信息
    Scrapy 爬取新浪微博
    《python3网络爬虫开发实战》--Scrapy
    《python3网络爬虫开发实战》--pyspider
    《python3网络爬虫开发实战》--APP爬取
    《python3网络爬虫开发实战》--模拟登陆
    《python3网络爬虫开发实战》--代理的使用
    用selenium爬取淘宝商品
    《python3网络爬虫开发实战》--动态渲染页面爬取
    Ajax爬取今日头条街拍美图
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/4762391.html
Copyright © 2020-2023  润新知