当前位置: 首页 > news >正文

java通过http网络url下载文件

    @Testpublic void test3() throws ParseException {String fileUrl = "http://*****/123.pdf";String savePath = "C:\\Users\\HHH\\Desktop\\文件\\123.pdf";try {URL url = new URL(fileUrl);InputStream inputStream = url.openStream();Path outputPath = Path.of(savePath);Files.copy(inputStream, outputPath, StandardCopyOption.REPLACE_EXISTING);System.out.println("File downloaded successfully.");} catch (Exception e) {e.printStackTrace();}}

上面代码报错,修改URL url = new URL(fileUrl);,使用URL url = new URL(new URI(fileUrl).toASCIIString());

    @Testpublic void test3() throws ParseException {String fileUrl = "http://*****/123.pdf";String savePath = "C:\\Users\\HHH\\Desktop\\文件\\123.pdf";try {URL url = new URL(new URI(fileUrl).toASCIIString());InputStream inputStream = url.openStream();Path outputPath = Path.of(savePath);Files.copy(inputStream, outputPath, StandardCopyOption.REPLACE_EXISTING);} catch (Exception e) {e.printStackTrace();}}

原因:

URL url = new URL(fileUrl); 和 URL url = new URL(new URI(fileUrl).toASCIIString()); 之间有一些微小的区别。
URL url = new URL(fileUrl);:这种方式直接使用 URL 类的构造函数创建一个 URL 对象。它假设 fileUrl 是一个合法的 URL 字符串,并不对其进行任何修改或编码。如果 fileUrl 含有特殊字符或非法字符,可能会导致 MalformedURLException 异常。
URL url = new URL(new URI(fileUrl).toASCIIString());:这种方式先通过 URI 类创建一个 URI 对象,然后再将其转换为 ASCII 字符串,最后使用 URL 类的构造函数创建一个 URL 对象。这种方式会对 fileUrl 进行编码,将其中的非 ASCII 字符转换为 ASCII 编码形式。这可以确保 URL 字符串的合法性。例如,使用这种方式可以正确处理包含中文或特殊字符的 URL。
总而言之,URL url = new URL(fileUrl); 直接创建 URL 对象,不对 URL 字符串进行编码。而 URL url = new URL(new URI(fileUrl).toASCIIString()); 先通过 URI 对象将 URL 字符串编码为 ASCII 形式,然后再创建 URL 对象。使用这种方式可以确保 URL 的合法性,尤其是处理包含非 ASCII 字符的 URL。

相关文章:

java通过http网络url下载文件

Testpublic void test3() throws ParseException {String fileUrl "http://*****/123.pdf";String savePath "C:\\Users\\HHH\\Desktop\\文件\\123.pdf";try {URL url new URL(fileUrl);InputStream inputStream url.openStream();Path outputPath Pa…...

网络安全【黑客】自学

1.什么是网络安全? 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有…...

PCA和自动编码器:每个人都能理解的算法

一、说明 本文的主要重点是提供主成分分析 (PCA) 和自动编码器数据转换技术的直观信息。我不打算深入研究支撑这些模型的数学理论,因为已经有大量的资源可用。 二、pca降维和自编码 2.1 pca和自编码的共同点 自动编码器通过组合数据最重要的特…...

C++——STL容器【priority_queue】模拟实现

本章代码:优先级队列模拟实现、priority_queue文档 文章目录 🐈1. priority_queue介绍🦄2. priority_queue模拟实现🐧2.1 构造函数🐧2.2 建堆向下调整向上调整 🐧2.3 仿函数🐧2.4 push & po…...

SpringBoot实现文件记录日志,日志文件自动归档和压缩

😊 作者: Eric 💖 主页: https://blog.csdn.net/weixin_47316183?typeblog 🎉 主题:SpringBoot实现文件记录日志,日志文件自动归档和压缩 ⏱️ 创作时间: 2023年08月06日 文章目…...

MySQL 窗口函数

聚合函数作为窗口函数 设聚合函数为op语法结构: op(字段名A) over(partition by 字段名B order by 字段名C rows between D1 and D2) 其中: partition by:按照某一字段将数据进行分组 order by:按照某一字段将数据进行排序&…...

0140 数据链路层2

目录 3.数据链路层 3.6局域网 3.7广域网 3.8数据链路层设备 部分习题 3.数据链路层 3.6局域网 3.7广域网 3.8数据链路层设备 部分习题 1.如果使用5类UTP来设计一个覆盖范围为200m的10BASE-T以太网,需要采用的设备是() A.放大器 …...

Python字典的应用场景

Python字典是一种无序、可变的数据类型,它由键值对组成。字典在Python中被广泛应用,以下是一些常见的应用场景: 数据存储和检索:字典可以用来存储和检索大量的数据,通过使用键来快速访问对应的值。例如,可以…...

关于外贸跟进客户过程中需要注意的地方

如果你感觉业务进展困难,多去看一些书,多去链接一些人,特别是优秀的人,多交流会让你思维更加开阔,笔记做好实践起来,就会有收获! 我记得汪老师说过:跟进客户,当你准备好…...

AI绘画:两组赛博咒语和ComfyUI使用方法

虽迟但到啊,上次说过要发,必然是要发滴! 本来我是可以直接发的,但是我又想着发关键词的同时,最好是讲解一下用法,这样更友好。所以就拖了一天! 下面先展示一下两套咒语的效果: 这套…...

Nacos源码 (2) 核心模块

返回目录 整体架构 服务管理:实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能配置管理:实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚…...

MySQL之深入InnoDB存储引擎——Buffer Pool

文章目录 一、空闲链表的管理二、缓冲页的哈希处理三、Flush链表的管理四、LRU链表的管理五、脏页刷新六、多Buffer Pool实例 InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。在数据库系统中,由于CPU速度与磁盘速度之间的鸿沟&…...

网络安全(秋招)如何拿到offer?(含面试题)

以下为网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作。 注:本套面试题,已整理成pdf文档,但内容还在持续更新中,因为无论如何都不可能覆盖所有的面试问题&#xf…...

笙默考试管理系统-MyExamTest----classranking(2)

笙默考试管理系统-MyExamTest----classranking(2) 目录 笙默考试管理系统-MyExamTest----classranking(2) 一、 笙默考试管理系统-MyExamTest----classranking 二、 笙默考试管理系统-MyExamTest----classranking 三、 笙…...

基于python的一个元素多种定位方式

基于 Python 的 Page Factory 设计模式测试库, 类似于Java的Page Factory模式,旨在减少代码冗余,简单易用,具有高度的可扩展能力。 支持以annotation的方式定义元素 支持同一个元素多种定位方式 支持动态的定位方式 安装 pip install pyth…...

Fastdfs集群搭建

一、简单介绍: FastDFS是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件&…...

【深度学习】Vision Transformer论文,ViT的一些见解《 一幅图像抵得上16x16个词:用于大规模图像识别的Transformer模型》

必看文章:https://blog.csdn.net/qq_37541097/article/details/118242600 论文名称: An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale 论文下载:https://arxiv.org/abs/2010.11929 官方代码:https:…...

在centos7上使用非编译方式安装ffmpeg

很多在centos7上安装ffmpeg的教程都需要使用编译方式的安装;编译时间较长而且需要配置; 后来搜索到可以通过加载rpm 源的方式实现快速便捷操作 第一种方式: 首先需要安装yum源: yum install epel-release yum install -y https://mirrors.…...

【微信小程序】导出Excel文件

// 导出 doOutExcel() {let fileName 考勤列表wx.request({url: XXX,method: POST,header: {"content-type": "application/json","Authorization": "token " wx.getStorageSync(userInfo).token},data: {}, // 请求参数responseTyp…...

接口测试—知识速查(Postman)

文章目录 接口测试1. 概念2. 原理3. 测试流程4. HTTP协议4.1 URL的介绍4.2 HTTP请求4.2.1 请求行4.2.2 请求头4.2.3 请求体4.2.4 完整的HTTP请求示例 4.3 HTTP响应4.3.1 状态行4.3.2 响应头4.3.3 响应体4.3.4 完整的HTTP请求示例 5. RESTful接口规范6. 测试用例的设计思路6.1 单…...

YOLOv13开箱即用镜像体验:简单几步,完成你的第一个AI检测项目

YOLOv13开箱即用镜像体验:简单几步,完成你的第一个AI检测项目 1. 为什么选择YOLOv13官版镜像? 1.1 传统部署的痛点 在目标检测领域,YOLO系列一直是开发者的首选。但传统部署方式往往让人望而却步: 环境配置复杂&am…...

终极免费方案:3分钟掌握ViGEmBus虚拟游戏手柄驱动的完整部署与应用

终极免费方案:3分钟掌握ViGEmBus虚拟游戏手柄驱动的完整部署与应用 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾为游戏不支持你的手柄…...

YALMIP求解器报错看不懂?从verbose到debug,教你快速定位并解决优化问题

YALMIP求解器报错看不懂?从verbose到debug,教你快速定位并解决优化问题 当你满怀期待地运行YALMIP优化代码,却看到命令行突然跳出一片红色报错信息时,那种挫败感每个优化工程师都深有体会。"No feasible solution found"…...

SAM3镜像部署:一键启动,开箱即用的文本引导分割工具

SAM3镜像部署:一键启动,开箱即用的文本引导分割工具 1. 快速入门指南 1.1 镜像概述 本镜像基于Meta最新发布的SAM3(Segment Anything Model 3)算法构建,通过二次开发集成了直观的Gradio Web交互界面。无需任何编程基…...

零基础玩转Qwen-Image-Edit-2511-Unblur-Upscale:模糊图片秒变清晰

零基础玩转Qwen-Image-Edit-2511-Unblur-Upscale:模糊图片秒变清晰 你是否遇到过这样的烦恼?手机里珍藏的老照片因为年代久远变得模糊不清,或者抓拍的精彩瞬间因为手抖而糊成一片。又或者,你从网上下载了一张心仪的图片&#xff…...

如何用Dify工作流引擎解决多平台内容分发效率难题

如何用Dify工作流引擎解决多平台内容分发效率难题 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow 当…...

微信毕业设计基于微信小程序的易物小店交换系统

前言 Spring Boot 易物小店交换系统是一个基于 Web 的应用程序,利用 Spring Boot 框架构建,主要用于帮助用户实现物品交换的功能。该系统为用户提供了一个便捷、安全、高效的平台,让他们能够轻松地发布自己想要交换的物品信息,寻找…...

从二极管到MOS管:工程师实测对比三种防反接电路的效率与成本(含数据)

从二极管到MOS管:三种防反接电路的全维度工程评估手册 当你的电路板因为电源反接冒出一缕青烟时,那种混合着焦味和绝望的体验,相信每个硬件工程师都记忆犹新。防反接电路看似简单,却直接影响着产品的可靠性、成本和能效表现。本文…...

Altium Designer电源层不够用?试试用Split Planes功能把3.3V和5V塞进同一层

Altium Designer电源层不够用?试试用Split Planes功能把3.3V和5V塞进同一层 在四层板设计中,硬件工程师常常面临一个棘手问题:有限的层数如何容纳多种电源和地网络?当3.3V、5V、1.8V以及AGND、DGND都需要专属平面时,传…...

OpenClaw压力测试:百川2-13B-4bits模型连续处理100个文件的稳定性

OpenClaw压力测试:百川2-13B-4bits模型连续处理100个文件的稳定性 1. 测试背景与动机 上周在整理项目文档时,我遇到了一个典型问题:需要批量重命名103个Markdown文件,并从中提取关键字段生成目录索引。手动操作不仅耗时&#xf…...