一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 遠程文件url如何轉為輸入流

java 遠程文件url如何轉為輸入流

2022-02-22 13:14指尖擋不住流年 Java教程

這篇文章主要介紹了java 遠程文件url如何轉為輸入流方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java 遠程文件url 轉為輸入流

?
1
2
3
4
5
6
7
8
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();
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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, "解析表格異常");
}
?
1
2
3
4
public static String getCellFormatValue(Cell cell) {
    cell.setCellType(CellType.STRING);
    return cell.getStringCellValue();
}

根據URL網址獲取輸入流

方法一

?
1
2
3
//文件訪問路徑
String url = "";
InputStream intstream = new URL(url).openStream();

方法二

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
    }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/kangzhuang521/article/details/104491488

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美bbxx| 国产精品久久久久a影院 | 亚洲国产精品综合福利专区 | 国产精品免费久久久久影院小说 | 9l桃色| 欧美精品一区二区在线观看 | 日本道色综合久久影院 | 久久中文字幕亚洲精品最新 | 国产91网站在线观看 | 日韩每日更新 | 99精品视频在线观看免费播放 | 91短视频社区在线观看 | 国产日韩片| 国产精品色图 | 日本五十路六十30人8时间 | 99精品在线视频 | 朝鲜女人性猛交 | 天天摸天天碰色综合网 | 好紧好爽再叫浪一点点潘金莲 | 国产喂奶300部 | 男人操女人免费视频 | 欧美亚洲第一页 | 国产精品女同久久免费观看 | 青青青视频免费观看 | 无码骚夜夜精品 | 我与恶魔的h生活ova | 香蕉免费一区二区三区 | 国产精品露脸国语对白99 | 欧美亚洲欧美 | 好男人资源免费播放在线观看 | 精品国产自在现线久久 | 2012中文字幕中字视频 | 日本另类z0zx高清 | 色佬头| 92国产福利久久青青草原 | 日本免费v片一二三区 | 国产精品对白刺激久久久 | 四虎884aa永久播放地址http | 亚洲精品一区在线观看 | 小寡妇好紧进去了好大看视频 | 日韩精选在线 |