【续】Spring学习笔记 -- 资源访问(Resource接口)

概述:

 

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

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

说明:

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

 

不多说,上代码,看注释

 

package com.cxyapi.spring.resource;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;

/**
 * @author cxy@cxyapi.com
 * 2013-7-29 上午11:05:16
 * 两种较为通用的spring 资源访问方式
 */
public class ResourceTest1
{
	@Test
	public void UrlResourceTest() throws Exception
	{
		//访问http资源 这里访问的是百度首页的logo
		String path="http://www.baidu.com/img/bdlogo.gif"; 
		//访问资源
		Resource res=new UrlResource(path);
		//使用apache commons的IOUtils将InputStream转换成byte数组
		byte[] gifByte=IOUtils.toByteArray(res.getInputStream());
		//使用apache commons的FileUtils将byte数组写入文件
		FileUtils.writeByteArrayToFile(new File("D://bdlogo.gif"), gifByte);
		System.out.println("图片访问成功,已经下载到您设定的目录,请访问");
		System.out.println("=================================");
		
		//访问本地资源,使用file://协议头,注意这里file:后是三个/
		path="file:///D://cxyapi/show.txt"; 
		res=new UrlResource(path);
		System.out.println("文件内容:"+IOUtils.toString(res.getInputStream(),"GB2312"));
	}
	
	@Test
	public void ResourceLoaderTest() throws Exception
	{
		/* 资源地址表达式
		 * classpath:相对于类的根路径,可访问jar或zip中的资源哦
		 * classpath*:和上面类似,只不过上面是加载找到的第一个资源,这个是全部加载
		 * file:文件系统目录中加载,可以是绝对,也可以是相对
		 * http:// 不用多说了吧
		 * ftp:// 不用多说了吧
		 * 
		 * ant风格:可以使用通配符
		 * 	?:匹配一个字符
		 * 	*:匹配多个字符
		 * 	**:匹配多层路径
		 * */
		ResourcePatternResolver rpr=new PathMatchingResourcePatternResolver();
		Resource[] rs=rpr.getResources("classpath:aop.xml");
		for(Resource one : rs)
		{
			showResourceInfo(one, true);
		}
		System.out.println("=============================");
		
		//file:访问文件系统(绝对 和 相对路径方式)
		//绝对路径 类似于FileSystemResource
		rs=rpr.getResources("file:/D:/cxyapi/show.txt");
		//相对路径 相对于当前项目路径
		//rs=rpr.getResources("file:src/aop.xml"); 
		for(Resource one : rs)
		{
			showResourceInfo(one, true);
		}
		System.out.println("=============================");
		
		//http:方式
		rs=rpr.getResources("http://www.baidu.com/img/bdlogo.gif");
		//为了测试的简便,这里直接取第一个资源
		byte[] gifByte=IOUtils.toByteArray(rs[0].getInputStream());
		FileUtils.writeByteArrayToFile(new File("D://bdlogo1.gif"), gifByte);
	}
	
	/**公共的现实文件信息方法
	 * @param one spring resource对象
	 * @param isShowContent 是否打印文件内容(非文本下不建议使用)
	 */
	private void showResourceInfo(Resource one,boolean isShowContent)
	{
		try
		{
			System.out.println("文件名称:"+one.getFilename());
			System.out.println("是否存在:"+one.exists());
			if(isShowContent)
			{
				System.out.println("文件绝对路径:"+one.getFile().getAbsolutePath());
				System.out.println("文件内容:");
				System.out.println(IOUtils.toString(one.getInputStream(),"GB2312"));
			}
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}

 

声明:

1.原创文章,转载请标明并加本文连接。

2.文章反映个人愚见,如有异议欢迎讨论指正

3.更多的内容请看我的  个人博客(测试版)

 

懒人精灵手游内存技术分析 教学声明:全套教程教学用到的游戏采用手游私服网游进行测试,不针对任何游戏。教学只做计算机技术研究,不做其他用途。 阅读详情

相关推荐

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1763

spring启动加载类,手动加载bean

方法一: public final class Assembler implements BeanFactoryPostProcessor { private static ConfigurableListableBeanFactory beanFactory; // Spring应用上下文环境 public void postProcessBea...

weixin_30872867的博客 604

单细胞转录组分析(scRNA-seq)

单细胞转录组测序(Single-cell RNA sequencing,scRNA-seq)是一种高通量测序技术,可以在单细胞水平解析基因表达情况,揭示细胞异质性,探索稀有细胞类型,并研究细胞状态转换及动态调控机制。与传统的。

大甘的博客 6141

Spring中初始化bean和销毁bean的时候执行某个方法的详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过注解@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 [java] view plain copy print?

NextX工作室的博客 1万+

SNAP新手避坑指南:手把手教你搞定Sentinel-2影像的镶嵌与重采样(附详细参数)

本文为SNAP新手提供Sentinel-2影像处理的详细指南,重点讲解镶嵌与重采样的关键步骤和参数设置。通过实际案例和常见问题解决方案,帮助用户避免常见错误,高效完成遥感影像处理任务。

weixin_29271263的博客 405

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在联发科(MTK)NeuroPilot平台上高效部署Qwen2.5大模型的全流程。内容涵盖从环境搭建、模型转换、量化优化到编译部署与上机推理的完整步骤,重点分享了模型转换与模型运行的关键实践与避坑指南,旨在帮助开发者将大语言模型成功集成至移动及边缘设备。

zeta9的博客 376

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

概述:      本文介绍两种较为通用的spring 资源访问方式 UrlResource:可以通过类似 http://, ftp://, file:// 这样的url协议来访问资源资源加载器:可以通过资源地址表达式来加载资源,支持ant风格,更加灵活 说明:    本文只是为了讲述UrlResource和资源加载器的使用,测试代码粗糙,没有做完善的验证,实际应用请自

Java小迷的专栏 1082

Maven的下载安装配置教程(详细图文)

目录 一、简单了解一下什么是Maven 二、maven的下载 三、maven的安装 四、maven的环境变量配置 五、setting文件配置 六、开发工具配置Maven 一、简单了解一下什么是Maven Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。 1.Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下基于Java开发的开源项目。 2.Maven项目对象模型(POM)是一..

bakelFF的博客 12万+

Spring之资源操作:Resource接口

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

鱼干的博客 3723

顶刊级科研绘图技巧

顶刊级科研绘图技巧

2401_89571885的博客 1155

ardupilot开发 --- 避障篇

适配ardupilot的雷达避障功能开发,使用低成本雷达思岚科技系列雷达,配置简单,灵敏度高,障碍物检测范围不低于30m。

记录老板的每次pua,分享领导每天的毒鸡汤... 4300

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

【Spring】开发框架Spring核心技术含Resource接口详细讲解、认识Spring体系结构、AOP模块、Web模块、测试模块、loc与DI、Spring资源访问神器——Resource接口等

m0_75058342的博客 4523

原理和代码解读:用Diffusion Models高清图像修复(Image Inpainting)

在最近的Diffusion Models应用中,Image Inpainting+ControlNet/Lora等工作在模特衣服生成、家居场景重建等场景中得到了广泛的应用。这篇博客主要介绍Diffusion Models如何在修复高清图像的。

沉迷单车的追风少年 2494

【Spring】Resource接口访问资源

Spring提供了Resource接口,为应用提供了更强的底层资源访问能力,该接口拥有对应不同资源类型的实现类。 资源访问接口 主要方法 boolean exists() 资源是否存在 boolean isOpen() 资源是否打开 URL getURL() throws IOException 如果底层资源可以表示成URL,则该方法放回对应的URL对象 File getFile() thro...

ngc_1277 241

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

wangxin1248的博客 1484

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring 学习笔记 Resource 资源

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

qq_16830879的博客 1672

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

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

Resource 接口是 Spring 资源访问的接口,具体的资源访问由该接口的实现类完成

Spring 框架提供了很好的扩展性,除了可以与各种第三方框架良好整合外,其 IoC 容器也允许开发者进行扩展,这种扩展甚至无须实现 BeanFactory 或 ApplicationContext 接口, 而是允许通过两个后处理器对 IoC 容器进行扩展

HEMM000的专栏 1366

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

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

sxudong2010的博客 307

Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用

ResourceResource接口是 Spring 框架中用于加载和访问资源的关键组件。它提供了一种统一的方式来处理不同类型的资源,包括类路径下的资源和文件系统中的资源。通过使用Resource接口,您可以更灵活地管理应用程序中的资源,无论这些资源实际上存储在哪里。希望这篇文章能够帮助您更好地理解和使用 Spring 框架中的Resource接口。通过合理利用Resource接口,您可以更好地组织和管理应用程序中的资源,使其更具可维护性和扩展性。后记 👉👉💕💕美好的一天,到此结束,下次继续努力!!

weixin_65175398的博客 1557

Spring3外部资源访问之Resource接口

概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都...

chifancui9836的博客 183

通过Spring Resource接口获取资源

通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式   1       Resource简介        在Spring内部,针对于资源文件有一个统一的接口Resource表示。其主要实现类有ClassPathResource、F

Jerry的博客 9064

spring核心技术之Resource资源理解

文章目录1 介绍**2 Resource 接口**resource接口提供哪些功能?3 spring为我们提供了哪些内置的Resource实现3.1 URLResource3.2 ClassPathResource3.3 FileSystemResource3.4 InputStreamResource3.5 ByteArrayResource4 ResourceLoader 资源加载5 Reso...

吃葡萄皮吐葡萄的博客 3638

Spring Resource接口进行资源访问

前言 什么是资源?我们已知Spring中有很多xml配置文件,同时还可能自建各种properties资源文件,还有可能进行网络交互,收发各种文件、二进制流等。粗略可分为:URL资源、File资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)。Spring把这些文件、二进制流统称为资源。程序对这些资源的访问,就叫做资源访问。 ...

成长之路 3993

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

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

寿春 1062

Spring 一 Resources概述、对外部资源访问、UrlResource访问网络资源、ClassPathResource 访问类路径下资源等

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

Guizy 962
上一篇: Spring学习笔记 -- 资源访问(Resource接口)
下一篇: oracle 11g r2 OEM配置
snkcxy
博客等级 码龄19年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值