千家信息网

java远程文件url怎么转为输入流

发表于:2024-10-14 作者:千家信息网编辑
千家信息网最后更新 2024年10月14日,这篇文章主要介绍"java远程文件url怎么转为输入流",在日常操作中,相信很多人在java远程文件url怎么转为输入流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"j
千家信息网最后更新 2024年10月14日java远程文件url怎么转为输入流

这篇文章主要介绍"java远程文件url怎么转为输入流",在日常操作中,相信很多人在java远程文件url怎么转为输入流问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"java远程文件url怎么转为输入流"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

java 远程文件url 转为输入流

URL url = new URL(fileUrl);HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置超时间为3秒conn.setConnectTimeout(3*1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输入流InputStream inputStream = conn.getInputStream();
public static AjaxModel parseExcelForInfo(InputStream inputStream, String fileName, int taskId) {    try {        //创建workbook对象        Workbook workbook = null;        if (fileName.contains(".xlsx")) {            workbook = new XSSFWorkbook(inputStream);        } else if (fileName.contains(".xls")) {            workbook = new HSSFWorkbook(inputStream);        } else {            return AjaxModel.failed(-1, "文件类型不正确");        }        //获取第一个sheet表        Sheet sheetAt = workbook.getSheetAt(0);        if (sheetAt != null) {            // TODO 校验excel头            Row headRow = sheetAt.getRow(0);            for (int i = 0; i < BusinessSettlementConstants.TEMPLATE_COULMN.length; i++) {                if (!FileUtil.getCellFormatValue(headRow.getCell(i)).trim().equals(BusinessSettlementConstants.TEMPLATE_COULMN[i])) {                    LOGGER.info("parseExcelForInfo excel头部信息顺序不正确,getCellFormatValue(headRow.getCell(i)):{}," +                                    "BusinessSettlementConstants.TEMPLATE_COULMN[i]:{},taskId:{}", FileUtil.getCellFormatValue(headRow.getCell(i)),                            BusinessSettlementConstants.TEMPLATE_COULMN[i], taskId);                    return AjaxModel.failed("excel标题头顺序不正确:" + FileUtil.getCellFormatValue(headRow.getCell(i)));                }            }            int startRowNum = sheetAt.getFirstRowNum() + 1;            int lastRowNum = sheetAt.getLastRowNum();             LOGGER.info("解析excel开始taskId:{},从【{}】行开始,到第【{}】行结束", taskId, startRowNum, lastRowNum);            List> dataList = new ArrayList>();            for (int rowNum = startRowNum; rowNum <= lastRowNum; rowNum++) {                // 每一行数据                Row row = sheetAt.getRow(rowNum);                Map map = new HashMap<>();                LOGGER.info("parseExcelForInfo row:{}", row);                if (row != null && row.getCell(0) != null && StringUtils.isNotEmpty(row.getCell(0).getStringCellValue()) && row.getCell(2) != null && row.getCell(4) != null) {                    LOGGER.info("parseExcelForInfo row:{},cell:{}", row, row.getCell(0));                    // 姓名                    map.put("userName", FileUtil.getCellFormatValue(row.getCell(0)));                                        dataList.add(map);                }            }            LOGGER.info("--------------解析完成 dataList:{}", dataList);            if (dataList.size() <= 0) {                return AjaxModel.failed(-1, "解析表格数据为空");            }            AjaxModel success = AjaxModel.success();            success.getData().put("dataList", dataList);            return success;        } else {            LOGGER.info("sheet内容为空");            return AjaxModel.failed(-1, "表格内容为空");        }    } catch (Exception e) {        LOGGER.error("parseExcelForInfo 解析异常", e);    }    return AjaxModel.failed(-1, "解析表格异常");}
public static String getCellFormatValue(Cell cell) {    cell.setCellType(CellType.STRING);    return cell.getStringCellValue();}

根据URL网址获取输入流

方法一

//文件访问路径String url = "";InputStream intstream = new URL(url).openStream();

方法二

public InputStream getInputStreamByUrl(String strUrl) {        HttpURLConnection conn = null;        try {            URL url = new URL(strUrl);            conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod("GET");            conn.setConnectTimeout(20 * 1000);            final ByteArrayOutputStream output = new ByteArrayOutputStream();            IOUtils.copy(conn.getInputStream(), output);            return new ByteArrayInputStream(output.toByteArray());        } catch (Exception e) {            logger.error("getInputStreamByUrl 异常,exception is {}", e);        } finally {            try {                if (conn != null) {                    conn.disconnect();                }            } catch (Exception e) {            }        }        return null;    }

到此,关于"java远程文件url怎么转为输入流"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0