java|java 远程文件url如何转为输入流

目录

  • java 远程文件url 转为输入流
  • 根据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|java 远程文件url如何转为输入流】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    推荐阅读