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

概述:

  1. 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)
    FileSystemResource:以文件的绝对路径方式进行访问
    ClassPathResourcee:以类路径的方式访问
    ServletContextResource:web应用根目录的方式访问
  2. 主要公用方法介绍(Resource接口下的)
    getFilename() : 获得文件名称
    contentLength() : 获得文件大小
    createRelative(path) : 在资源的相对地址上创建新文件
    exists() : 是否存在
    getFile() : 获得Java提供的File 对象
    getInputStream() :  获得文件的流
  3. 与常规的对应方法
    FileSystemResource 效果类似于Java中的File
    ClassPathResource 效果类似于this.getClass().getResource("/").getPath();
    ServletContextResource 效果类似于request.getServletContext().getRealPath("");
  4. 说明
    1.虽然这些方法都有常规方法获得(这个也是肯定的),但是spring的这些方法都继承自Resource接口(更加方便)
    2.
    ServletContextResource 还演示了转码操作 EncodedResource类的使用(个人认为比较实用)
    3.今后会继续补充
    4.不多说了,上代码,看注释
package com.cxyapi.spring.resource;

import java.io.File;

import org.apache.commons.io.IOUtils;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

/**
 * @author cxy@cxyapi.com
 * spring学习笔记 - 资源访问(Resource接口)
 * 说明:
 * 主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)
 *   FileSystemResource:以文件的绝对路径方式进行访问
 *   ClassPathResource:以类路径的方式访问
 *   ServletContextResource:web应用根目录的方式访问
 */
public class ResourceTest
{
	
	/**
	 * FileSystemResource
	 * 文件系统资源访问:以文件系统的绝对路径方式进行访问
	 */
	@Test
	public void FileSystemResourceTest() throws Exception
	{
		String filePath="D:/cxyapi/show.txt";
		FileSystemResource res1=new FileSystemResource(filePath);
		if(res1.exists())
		{
			System.out.println("资源的文件名:"+res1.getFilename());
			System.out.println("资源的文件大小:"+res1.contentLength());
			//可以获取输入流和输出流,然后配合apache common的IOUtils 读取内容
			System.out.println("文件内容:"+IOUtils.toString(res1.getInputStream(),"GB2312"));
			File f=res1.getFile();	//转换成Java的File对象
		}else
		{
			System.out.println("指定资源不存在");
		}
	}
	
	/**
	 * ClassPathResource:以类路径的方式访问
	 */
	@Test
	public void ClassPathResourceTest() throws Exception
	{
		Resource res=new ClassPathResource("aop.xml");
		//对应的文件路径:E:\workspace\SpringTest\WebContent\WEB-INF\classes\aop.xml
		System.out.println("文件的物理路径:"+res.getFile().getAbsolutePath());
		System.out.println("对应的以往的实现方式:"+this.getClass().getResource("/").getPath());
	}

}

 

   ServletContextResource的测试写在了jsp中,因为这个方法需要jsp内置对象application作为参数

<%@page import="org.springframework.core.io.support.EncodedResource"%>
<%@page import="org.springframework.util.FileCopyUtils"%>
<%@page import="org.springframework.web.context.support.ServletContextResource"%>
<%@page import="org.springframework.core.io.Resource"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ServletContextResource测试</title>
</head>
<body>
<%
	//文件的相对路径是Web应用的根路径 也就是 WebContent 或者是 WebRoot(超级实用)
	Resource res = new ServletContextResource(application,"/configTest/cxyapi.txt");
	String fileName=res.getFilename();
	//做个转码 输出文件内容
	EncodedResource encRes=new EncodedResource(res,"UTF-8");
	String fileContent=FileCopyUtils.copyToString(encRes.getReader()).replaceAll("\r\n", "<br/>");
%>
<p>
	<b>文件名称:</b><%=fileName%>
</p>
<p>
	<b>文件内容:</b><br/>
	<%=fileContent%>
</p>
</body>
</html>

 

 

声明:

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

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

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

Spring实战之FileSystemResource加载资源文件示例 主要介绍了Spring实战之FileSystemResource加载资源文件,结合实例形式分析了spring FileSystemResource加载xml资源文件的具体实现步骤与相关操作技巧,需要的朋友可以参考下 立即下载

相关推荐

读书笔记:深度学习入门-基于python的理论与实现(俗称鱼书)

终于从头到尾把鱼书看完啦,真的是非常入门,非常查漏补缺,对新手很友好,对有一定基础的人也非常不错。看完不复习等于没看,所以今天开始复盘,顺便写这篇读书笔记。希望分享给没看过这本书或者看过这本书的同僚们参考,欢迎大家指教。我将从第三章神经网络开始复习,前两章内容书里已经非常基础and清楚了。(会持续更新滴).........

博客而已 1万+

EncodedResource类解读

EncodedResource是spring中Resource编码相关的封装类,EncodedResource里面封装了一个Resource成员属性,其实主要功能就是通过指定的编码获取资源的输入流。EncodedResource主要看getReader()方法,这个方法通过指定的编码方式返回InputStreamReader。...

qq_43203949的博客 796

三相电机控制入门:端电压、相电压、线电压到底怎么测?(附实测波形对比)

本文为三相电机控制初学者提供了端电压、相电压和线电压的完整测量指南。通过厘清三者的物理定义与测量方法,详细讲解了如何搭建虚拟星形点电路,并对比分析了方波、SPWM和SVPWM三种主流控制模式下关键电压波形的核心特征与差异,帮助工程师掌握正确的示波器测量与波形解读技巧。

oauth7security的博客 645

spring篇

Spring源码学习–获取BeanFactory《读郝佳书》 本人菜鸟一枚,本博客用于记录自己学习的过程,以细为主,具体到每个方法调用,如果有大神看到欢迎指点,谢谢! 从BeanFactory bf = new XmlBeanFactory(new ClassPathResource(“beanFactoryTest.xml”)),开始记录。 本篇以“beanFactoryTest.xml”...

weixin_38999057的博客 160

超越数据手册:深入Zynq XADC的DRP接口与PL端自定义采样逻辑

本文深入探讨Zynq-7000系列XADC模块的DRP接口机制与PL端自定义采样逻辑实现。通过硬件级多通道轮询、触发采样和实时校准技术,突破传统软件驱动限制,为高精度电压测量和通讯应用提供极致灵活性和响应速度。

xxx12的博客 768

微信小程序推广策略,打开小程序领域流量大门

本文旨在为小程序开发者、运营者和企业主提供一套完整的微信小程序推广策略体系,帮助他们在竞争激烈的小程序生态中获得更多流量和用户。内容涵盖从0到1的冷启动策略,到成熟期的增长技巧。本文将首先介绍小程序的基础推广设置,然后深入探讨各种流量获取渠道,接着分析数据驱动的优化方法,最后展望未来发展趋势。小程序:无需下载安装即可使用的应用,运行在微信生态内:独立访客数:页面浏览量转化率:完成目标行为的用户比例留存率:用户在一定时间后仍活跃的比例自然流量获取:通过优化搜索、完善资料等方式获得基础流量社交裂变。

小程序开发 1028

Spring Assert.notNull(encodedResource, “EncodedResource must not be null“);

Assert.notNull(encodedResource, “EncodedResource must not be null”);

飘然生的博客 358

Altium Designer(AD24)导入DDB库文件(Protel 99SE)方法

Altium Designer和Protel均为Altium公司开发的软件。本文介绍Altium Designer 24软件导入DDB库文件(Protel 99SE)方法。

fydar的博客 1971

Maven项目读取resources目录下文件

如题,这里只提供一种简便方法,源于Spring的支持,但是又可以脱离Spring框架的使用。如下Resource res = new ClassPathResource("folder/file.txt");这是其中一种,读取Web项目下文件通常有以下: 文件的绝对路径 通过ClassPathResource,以类路径的方式 通过Servlet的相对于Web根目录的方式 一般

NEWCIH的博客 5084

【nerfStudio】1-在windows上安装nerfStudio

安装Git。安装Visual Studio 2022。在安装CUDA之前必须完成此步骤。必须在“桌面开发与C++”工作流程(在BuildTools版本中称为“C++构建工具”)中包含所需的组件。Nerfstudio要求。我们建议使用conda来管理依赖关系。在继续之前,请确保安装了Conda。 依赖关系 PyTorch 请注意,如果安装了低于2.0.1的PyTorch版本,则应卸载先前版本的pytorch、functorch和tiny-cuda-nn。 基于CUDA 11.8的Torch 2.0.1 安装基

dlhlSC的博客 1691

ISO 21434汽车网络安全标准深度解读系列(十):标准实施总结与展望

ISO21434标准深度解读系列总结篇系统回顾了汽车网络安全标准的核心内容与实施要点。文章梳理了10篇系列文章的结构体系,提炼出标准的三大核心价值:系统性方法(全生命周期覆盖、多层次管理)、风险导向理念(威胁驱动、动态管理)和供应链协同机制。总结了实施经验中的关键要素,包括高层承诺、专业团队建设,并提出了分阶段实施路径建议。同时分析了当前面临的技术挑战(系统复杂性、新兴技术)和管理挑战(文化转变、资源投入)。最后展望了AI应用、零信任架构等技术发展趋势,以及标准未来的演进方向,为企业实施提供战略与执行层面的

VehSwHwDeveloper的博客 557

spring学习笔记 -- 资源访问(Resource接口)

  http://snkcxy.iteye.com/blog/1913796   概述:       主要介绍3种方式(当然不止三种,但是这三种基本能应付大多需求)FileSystemResource:以文件的绝对路径方式进行访问ClassPathResourcee:以类路径的方式访问ServletContextResource:web应用根目录的方式访问 主要公用方法介...

Hi, Sun 233

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 902

spring学习笔记(2)文件资源访问接口Resource

spring 资源抽象接口下的几个常用实现类 实现类 说明 ClassPathResource 类路径下的资源,资源以相对类路径的方式表示 FileSystemResource 文件系统资源,资源以文件系统路径的的方式表示,如/home/root/test.txt ServletContextResource 为访问web上下文中的资源而设计的类,负责以相对于web应用

总结沉淀 1806

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

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

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

Java小迷的专栏 950

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

Java小迷的专栏 1082

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

snkcxy的博客 196

Spring之资源操作:Resource接口

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

鱼干的博客 3723

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

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

m0_75058342的博客 4523

【Spring】Resource接口访问资源

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

ngc_1277 241

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

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

wangxin1248的博客 1484

Spring 学习笔记 Resource 资源

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

qq_16830879的博客 1672

【小家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
上一篇: Java生成透明背景图片
下一篇: 【续】Spring学习笔记 -- 资源访问(Resource接口)
snkcxy
博客等级 码龄19年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值