Java学习之道:[续]Spring学习笔记 -- 资源访问(Resource接口)

05.Spring 资源加载 - Resource 基本概念Spring 的 Resource 接口代表底层外部资源,提供了对底层外部资源的一致性访问接口。利用该接口可以表示不同形式(类型)的资源。 InputStreamSource 接口 public interface InputStreamSource { // 表示任意形式的资源都可以被转换成输入流 InputStream getInputStream() throws IO 阅读详情

概述:

 

   本文介绍两种较为通用的spring 资源访问方式

  1. UrlResource:可以通过类似 http://, ftp://, file:// 这样的url协议来访问资源
  2. 资源加载器:可以通过资源地址表达式来加载资源,支持ant风格,更加灵活

说明:

   本文只是为了讲述UrlResource和资源加载器的使用,测试代码粗糙,没有做完善的验证,实际应用请自行处理。

 

不多说,上代码,看注释

 

Java代码  收藏代码
  1. package com.cxyapi.spring.resource;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import org.apache.commons.io.FileUtils;  
  7. import org.apache.commons.io.IOUtils;  
  8. import org.junit.Test;  
  9. import org.springframework.core.io.Resource;  
  10. import org.springframework.core.io.UrlResource;  
  11. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;  
  12. import org.springframework.core.io.support.ResourcePatternResolver;  
  13.   
  14. /** 
  15.  * @author cxy@cxyapi.com 
  16.  * 2013-7-29 上午11:05:16 
  17.  * 两种较为通用的spring 资源访问方式 
  18.  */  
  19. public class ResourceTest1  
  20. {  
  21.     @Test  
  22.     public void UrlResourceTest() throws Exception  
  23.     {  
  24.         //访问http资源 这里访问的是百度首页的logo  
  25.         String path="http://www.baidu.com/img/bdlogo.gif";   
  26.         //访问资源  
  27.         Resource res=new UrlResource(path);  
  28.         //使用apache commons的IOUtils将InputStream转换成byte数组  
  29.         byte[] gifByte=IOUtils.toByteArray(res.getInputStream());  
  30.         //使用apache commons的FileUtils将byte数组写入文件  
  31.         FileUtils.writeByteArrayToFile(new File("D://bdlogo.gif"), gifByte);  
  32.         System.out.println("图片访问成功,已经下载到您设定的目录,请访问");  
  33.         System.out.println("=================================");  
  34.           
  35.         //访问本地资源,使用file://协议头,注意这里file:后是三个/  
  36.         path="file:///D://cxyapi/show.txt";   
  37.         res=new UrlResource(path);  
  38.         System.out.println("文件内容:"+IOUtils.toString(res.getInputStream(),"GB2312"));  
  39.     }  
  40.       
  41.     @Test  
  42.     public void ResourceLoaderTest() throws Exception  
  43.     {  
  44.         /* 资源地址表达式 
  45.          * classpath:相对于类的根路径,可访问jar或zip中的资源哦 
  46.          * classpath*:和上面类似,只不过上面是加载找到的第一个资源,这个是全部加载 
  47.          * file:文件系统目录中加载,可以是绝对,也可以是相对 
  48.          * http:// 不用多说了吧 
  49.          * ftp:// 不用多说了吧 
  50.          *  
  51.          * ant风格:可以使用通配符 
  52.          *  ?:匹配一个字符 
  53.          *  *:匹配多个字符 
  54.          *  **:匹配多层路径 
  55.          * */  
  56.         ResourcePatternResolver rpr=new PathMatchingResourcePatternResolver();  
  57.         Resource[] rs=rpr.getResources("classpath:aop.xml");  
  58.         for(Resource one : rs)  
  59.         {  
  60.             showResourceInfo(one, true);  
  61.         }  
  62.         System.out.println("=============================");  
  63.           
  64.         //file:访问文件系统(绝对 和 相对路径方式)  
  65.         //绝对路径 类似于FileSystemResource  
  66.         rs=rpr.getResources("file:/D:/cxyapi/show.txt");  
  67.         //相对路径 相对于当前项目路径  
  68.         //rs=rpr.getResources("file:src/aop.xml");   
  69.         for(Resource one : rs)  
  70.         {  
  71.             showResourceInfo(one, true);  
  72.         }  
  73.         System.out.println("=============================");  
  74.           
  75.         //http:方式  
  76.         rs=rpr.getResources("http://www.baidu.com/img/bdlogo.gif");  
  77.         //为了测试的简便,这里直接取第一个资源  
  78.         byte[] gifByte=IOUtils.toByteArray(rs[0].getInputStream());  
  79.         FileUtils.writeByteArrayToFile(new File("D://bdlogo1.gif"), gifByte);  
  80.     }  
  81.       
  82.     /**公共的现实文件信息方法 
  83.      * @param one spring resource对象 
  84.      * @param isShowContent 是否打印文件内容(非文本下不建议使用) 
  85.      */  
  86.     private void showResourceInfo(Resource one,boolean isShowContent)  
  87.     {  
  88.         try  
  89.         {  
  90.             System.out.println("文件名称:"+one.getFilename());  
  91.             System.out.println("是否存在:"+one.exists());  
  92.             if(isShowContent)  
  93.             {  
  94.                 System.out.println("文件绝对路径:"+one.getFile().getAbsolutePath());  
  95.                 System.out.println("文件内容:");  
  96.                 System.out.println(IOUtils.toString(one.getInputStream(),"GB2312"));  
  97.             }  
  98.         } catch (IOException e)  
  99.         {  
  100.             e.printStackTrace();  
  101.         }  
  102.     }  
  103. }  
记录思科cisco交换机升级iso步骤 Cisco Nexus 93180交换机版本升级 阅读详情

相关推荐

告别调参玄学:用 DINOv2 (ViT-S/ViT-G) 和 PCA 可视化,直观理解自监督特征

本文深入解析了DINOv2(ViT-S/ViT-G)模型在自监督学习中的特征提取机制,通过PCA降维技术实现特征空间的可视化。文章对比了不同规模模型的特征表达差异,并提供了PCA阈值调优和深度分析的实用技巧,帮助读者直观理解自监督学习的视觉密码。

weixin_42565865的博客 408

秒懂HTTP之URL与资源

【版权申明】非商业目的可自由转载 博文地址: 出自:shusheng007 文章目录概述发展历史基础URI vs URLURL 语法HTTPHTTPSFTPURL编码总结 概述 HTTP(Hypertext Transfer Protocol)是当今互联网的基石,熟练掌握HTTP也是一个互联网从业者的基本要求,今天我们就来总结一下HTTP的基础知识。 发展历史 现在普遍认为Tim Berner...

ShuSheng007的程序人生 1858

2015年全国大学生电子设计大赛综合测评题

2015年全国大学生电子设计大赛综合测评题 题目如下: 一、555产生可调方波 555定时器是一种集成电路芯片,常被用于定时器、脉冲产生器和振荡电路。555可被作为电路中的延时器件、触发器或起振元件。 555定时器可组成单稳态电路、多稳态电路和无稳态电路。产生方波其实就是制造一个无稳态电路。 555定时器的引脚功能: 其中: DIS引脚与OUT脚电平一致 TRIG: 当此引脚电压降至1/3VCC(或由控制端决定的阈值电压)时输出端给出高电平。 THR:当此引脚电压升至2/3VCC(或由控制端决定的阈值电压

m0_47066484的博客 3万+

resource 2.0 Resource

UrlResource UrlResource 封装了 java.net.URL,它能够被用来访问任何通过 URL 可以获得的对象,例如:文件、HTTP 对象、FTP 对象等。所有的 URL都有个标准的 String 表示,这些标准前缀可以标识不同的 URL 类型,包括 file:访问文件系统路径,http: 通过HTTP协议访问的资源,ftp: 通过FTP访问的资源等等。 UrlResource 对象可以在 Java 代码中显式地使用 UrlResource 构造函数来创建。但更多的是通过调用带表示路径的

大风起兮 415

博图软件V15.1安装教程

博途软件安装

m0_46266496的博客 1万+

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

8 -- 深入使用Spring -- 3...1 Resource实现类UrlResource

      8.3.1 Resource 实现类------UrlResource : 访问网络资源的实现类         1.访问网络资源           访问网络资源通过UrlResource 类实现,UrlResource是java.net.URL类的包装,主要用于访问之前通过URL类访问的资源对象。      /*创建一个Resource 对象,指定从文件系统里...

limeOracle的博客 379

离合器KP点自学习:从原理到工程实践的全景解析

本文全面解析了离合器KP点自学习的原理与工程实践,详细介绍了KP点的物理本质、控制价值及自学习方法。通过扭矩增量式和转速变化式学习法,结合不同变速箱构型的适配策略,提升离合器控制的精度与效率。文章还探讨了液压系统迟滞补偿和摩擦材料老化应对方案,为工程实践提供可靠保障。

weixin_33717117的博客 284

通过URL获取网络资源

主类: [java] view plaincopyprint? package com.ken.getUrl;         //声明包语句   import java.io.BufferedInputStream;  import java.io.InputStream;  import java.net.URL;  import java.net.URLConnec

j9y6f315的专栏 674

【Unity】网络游戏实战(序章)MMORPG大型多人在线角色扮演 + 中国象棋联网对战

本系列会基于两种常见的网络游戏类型(MMORPG大型多人在线角色扮演和多人棋牌),从零开始实现网络游戏开发中的大多数环节。【杜绝代码炫技】本系列杜绝代码炫技,摈弃那些高深的设计模式,一切业务逻辑的实现代码追求浅显易懂,即便是网络编程菜鸟,也能循序渐进掌握本系列的核心要点。【授之鱼也授之渔】与一些开源库那样只授予源码不同,本系列还会基于各个技术要点展开详解,并结合切实的可直接运行的Demo,授之鱼更授之渔。

神码编程 1958

uniapp [安卓苹果App端] - 实现APP开发后台保活+息屏后台持续运行效果,强制后台保活手机黑屏后进程存活后台保持网络连接或持续定位等功能提供支持(app后台运行休眠仍然可以确保一直运行)

uniapp APP开发后台保活,Uniapp-APP后台保活插件(安卓苹果ios后台保活)保证应用在后台继续运行,uniapp实现app保活 保后台运行 避免系统主动杀进程,如何让安卓APP一直在后台运行?uniapp 安卓 APP 后台持续运行(保活)iOS App后台保活,Android 后台运行白名单实现保活,保活息屏后台运行,uniapp后台保活,uniapp熄屏 后台运行,Android/ios进程保活/息屏后后台保持定位、网络运行,uniapp在android ios保活,挂后台可运行,安卓A

🏆 前端领域优质创作者 1万+

biz入门(1)-开发前的准备

开发前的准备 一,ResourceOne Studio5.1 获取方式: 1,登陆http://resourceone.chinasofti.com/ 2,注册为R1用户 3,点击”产品”------>BizFoundation   4,点击产品下载,获取最新版本V5.1, , 5,点击后将提示   二,JDK1.4及以上版本 三,Tomcat5.5及以上版本 四,MyS

543

华为OD机试新系统真题【迷宫相遇】

华为OD机试 新系统真题【迷宫相遇】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【迷宫相遇】多语言题解。

qq_45776114的博客 762

【Spring】开发框架Spring核心技术含Resource接口详细讲解

Spring 是 Java EE 编程领域的一款轻量级的开源框架,由被称为“Spring 之父”的 Rod Johnson 于 2002年提出并创立,它的目标就是要简化 Java 企业级应用程序的开发难度和周期。 Spring 自诞生以来备受青睐,一直被广大开发人员作为Java 企业级应用程序开发的首选。时至今日,Spring 俨然成为了 Java EE 代名词,成为了构建 Java EE 应用的事实标准

小洁洁 3288

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring之资源操作:Resource接口

🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零基础学Java——小白入门必备🔥 重识C语言——复习回顾🔥 计算机网络体系———深度详讲 HCIP数通工程师-刷题与实战🔥🔥🔥 微信小程序开发——实战开发🔥 HarmonyOS 4.0 应用开发实战——实战开发🔥🔥🔥 Redis快速入门到精通——实战开发🔥🔥🔥

鱼干的博客 3723

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java学习之道:Spring学习笔记 -- 资源访问(Resource接口)

概述: 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求) FileSystemResource:以文件的绝对路径方式进行访问 ClassPathResourcee:以类路径的方式访问 ServletContextResource:web应用根目录的方式访问主要公用方法介绍(Resource接口下的) getFilename() : 获得文件名称 contentLeng

Java小迷的专栏 950

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring 学习笔记 Resource 资源

Spring Resources 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理 URL 资源、File 资源、ClassPath相关资源等等。并且在 java 中 Java .net.URL 类和用于各种 URL 前缀的标准处理程序对于所有对底层资源的访问都不够充分。处理各种各样的资源需要使用到不同的接口,这就增加了系统的复杂性。 对此 Spring 提供了 Resour...

qq_16830879的博客 1672

Spring学习(九)资源访问接口Resource

JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,比如缺少从类路径或者从web容器的上下文中获取资源的操作类。因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力。该接口拥有对应不同资源类型的实现类。 那么先来了解一下resource资源中的主要方法: 1.    boolean exists():判断资源是否存在 2.    b

wangxin1248的博客 1484

Java基础 -- 资源访问利器Resource接口

资源抽象接口Resource 前言 JDK 所提供的访问资源的类(如 java.net.URL、File 等)并不能很好地满足各种底层资源的访问需求,比如缺少从类路径或者 Web 容器的上下文中获取资源的操作类。有鉴于此,Spring 设计了一个 Resource 接口,它为应用提供了更强的访问底层资源的能力。该接口拥有对应不同资源类型的实现类。 Resource接口里面的方法 boolean ...

寿春 1062

【小家Spring】资源访问利器---Spring提供的Resource接口以及它的常用子类源码分析

前言 资源是一个抽象的概念,什么是资源?我们已知Spring中有很多xml配置文件,同时还可能自建各种properties资源文件,还有可能进行网络交互,收发各种文件、二进制流等。 资源粗略的可以分为(这里以Spring的分类为例): URL资源 File资源 ClassPath相关资源 服务器相关资源(JBoss AS 5.x上的VFS资源) JDK操纵底层资源基本就是java.net.UR...

架构师:通透,才能写出好代码! 1704

spring 之资源操作:Resources

1.接口的实现类可以获取资源的Resource实例。它是用于加载不同类型资源的抽象接口,提供了一种统一的方式来访问各种资源,如文件、类路径资源、URL等。通过,可以轻松地获取和操作应用程序中的资源。2.实现了接口的类实例将获得对的引用。这意味着它们可以在运行时通过来访问资源。这对于将资源加载能力注入到特定的类中非常有用,使它们能够以一种更灵活的方式处理资源。:这个方法用于根据资源位置获取Resource实例。Resource可以表示各种资源,例如文件、URL、类路径资源等。是。

一切总会归于平淡 2492

Spring6学习笔记5:资源操作 Resources

本文主要介绍了Spring框架中资源操作Resources模块的内容,包括Resource接口、Resource实现类、ResourceLoader接口、ResourceLoaderAware接口、使用Resource作为属性、应用程序上下文和资源路径。供个人学习使用。

专注Java和MySQL领域知识分享 977

Spring之资源操作:Resource的实现类

Resource的实现类 Resource 接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。Resource一般包括这些实现类:UrlResource、ClassPathResource、FileSystemResource、ServletContextResource、InputStreamResource、ByteArrayResource

鱼干的博客 3555

Spring的资源访问接口---Resource

转载自:https://www.2cto.com/kf/201803/731102.html JDK提供的访问资源的类(File等)不能很好满足各种某些资源的访问需求。比如缺少从类路径和Web容器的上下文中获取资源的资源操作类。Spring的Resource接口提供了更好用的资源访问能力。Spring使用Resource访问各种资源文件,配置文件资源,国际化属性资源等。 Resource.java...

sxudong2010的博客 307

13. spring-容器: Resource接口详解

在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源等很多资源。因为处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统一访问,是不是很方便?而且使我们系统更加简洁,都是对不同的底层资源使用同一个接口进行访问。 Spring 提供一个Resource接口来统一这些底层资源一致性的访问,而且提供了一些便利的接口,从而能提供

elegent Developer's 的博客 1724
上一篇: Java学习之道:Spring学习笔记 -- 资源访问(Resource接口)
下一篇: Java学习之道:纯Hibernate使用-不用spring事务管理
Java小迷
博客等级 码龄13年 147粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值