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<Map<String, String>> dataList = new ArrayList<Map<String, String>>();
            for (int rowNum = startRowNum; rowNum <= lastRowNum; rowNum++) {
                // 每一行数据
                Row row = sheetAt.getRow(rowNum);
                Map<String, String> 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;
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java从输入流中获取数据并返回字节数组示例

    复制代码 代码如下: import java.io.ByteArrayOutputStream;import java.io.InputStream;//从输入流中获取数据并以字节数组返回public class StreamTool {    /**     * 从输入流获取数据     * @param inputStream     * @return     * @throws Exception     */    public static byte[] readInputStrea

  • 浅谈JAVA中输入输出流实例详解

    java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家介绍JAVA中输入输出流实例详解. 流的层次结构 定义:        java将读取数据对象成为输入流,能向其写入的对象叫输出流.结构图如下: 1.输入输出: 输入/输出(Input/Output)是指对某

  • Java输入输出流的使用详细介绍

    1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

  • java通过url下载文件并输出的方法

    实例如下所示: controller: @RequestMapping(value = "/{loanid}/{atmtType}") public void doGet(@PathVariable("loanid") String loanid,@PathVariable("atmtType") String atmtType, HttpServletRequest req,HttpServletResponse response) { Map

  • 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-Ag

  • asp读取远程文件并保存到本地代码

    <% dim act,ifLogin,loginUrl,loginActUrl,loginData,fileUrl,fileName act=request.QueryString("act") if(act="do") then   ifLogin=Cint(request.QueryString("ifLogin"))  loginActUrl=request.Form("loginActUrl")  loginDa

  • asp下实现替换远程文件为本地文件并保存远程文件的代码

    1.将下面的文本文件下载,并将.TXT改为remote.asp,里面有具体设置方法 复制代码 代码如下: <%  '添加资源时是否保存远程图片 Const sSaveFileSelect=True '远程图片保存目录,结尾请不要加"/" Const sSaveFilePath="/images/News" '远程图片保存类型 Const sFileExt="jpg|gif|bmp|png" '////////////////////////

  • java利用SMB读取远程文件的方法

    本文实例为大家分享了java利用SMB读取远程文件的具体代码,供大家参考,具体内容如下 package com.yss.test.FileReadWriter; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import jav

  • java断点续传功能实例(java获取远程文件)

    复制代码 代码如下: import java.io.BufferedInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.net . * ; /** * 文件传送客户端:获取远程文件 */ public cl

  • Java 将文件转为字节数组知识总结及实例详解

    Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列混合后的二进制数据.本文旨在记录自己在使用Java将文件转为字节数组的一些知识理解与汇总. FileInputStream 利用FileInputStream读取文件 FileInputStream是InputStream的子类,用于从文件中读取信息,构造器接收一个File类型或表示文件路径的Str

  • Java远程连接Linux服务器并执行命令及上传文件功能

    最近再开发中遇到需要将文件上传到Linux服务器上,至此整理代码笔记. 此种连接方法中有考虑到并发问题,在进行创建FTP连接的时候将每一个连接对象存放至 ThreadLocal<Ftp> 中以确保每个线程之间对FTP的打开与关闭互不影响. package com.test.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileFilter; import java.io.FileIn

  • Java实现文件上传到服务器本地并通过url访问的方法步骤

    目录 一.场景 二.SpringBoot默认静态资源访问方式 三.上传的文件应该存储在哪?怎么访问? 1.文件存储在哪? 2.怎么访问? 四.测试 五.总结 一.场景 Java实现文件上传到服务器本地,并通过url访问 有个需求,前端上传文件,需要用开关的方式同时支持上传七牛和服务器本地,方便不同的用户需求合理分配资源.本篇主要介绍文件上传到本地,然后通过url访问. 二.SpringBoot默认静态资源访问方式 首先想到的就是可以通过SpringBoot通常访问静态资源的方式,当访问:项目根路

  • java远程连接调用Rabbitmq的实例代码

    本文介绍了java远程连接调用Rabbitmq,分享给大家,希望此文章对各位有所帮助. 打开IDEA创建一个maven工程(Java就可以了). pom.xml文件如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac

  • 浅谈java 中文件的读取File、以及相对路径的问题

    一.对于java项目中文件的读取 1.使用System 或是 系统的Properties对象 ①直接是使用 String relativelyPath=System.getProperty("user.dir"); ②使用Properties对象 我们先来遍历一下系统的属性: Properties properties = System.getProperties(); Enumeration pnames = properties.propertyNames(); while (pn

随机推荐