Spring资源访问

2018-09-15  本文已影响0人  醉里梦乡

文章内容来自本人学习《精通Spring 4.x 企业应用开发实战》一书的笔记整理,部分内容摘抄原文。

1、资源抽象接口

JDK所提供的访问资源的类(如 java.net.URL、File等)并不能很好地满足各种底层资源的访问需求,比如缺少从类路径或Web容器的上下文中获取资源的操作类。因此,Spring设计了一个Resource接口,它为应用提供了更强大的底层资源访问能力。

Resource接口主要方法

Resource接口及实现类关系

image

测试DEMO

package com.hqq.spring.resource;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Spring资源访问测试DEMO
 * Created by HUANGQIQIN on 2018/9/12.
 */
public class TestSpringResource {

    public static void main(String[] args) throws IOException {

        String filePath = "F:/ideawork/hqqstudy/springstudy/src/main/resources/text.txt";

        // 使用系统文件路径方式加载文件
        WritableResource writableResource = new PathResource(filePath);

        //使用WritableResource接口写资源
        OutputStream outputStream = writableResource.getOutputStream();
        outputStream.write("Hello World".getBytes("UTF-8"));
        outputStream.close();


        //使用类路径方式加载文件
       Resource classPathResource = new ClassPathResource("text.txt");

        // 如果资源文件采用特殊编码,可以使用以下方式设置编码格式
        // EncodedResource encodedResource = new EncodedResource(classPathResource, "UTF-8");
        // InputStream inputStream = encodedResource.getInputStream();

        InputStream inputStream = classPathResource.getInputStream();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int len = -1;
        while ((len = inputStream.read()) != -1){
            byteArrayOutputStream.write(len);
        }
        System.out.println(byteArrayOutputStream.toString());

    }
}
上一篇 下一篇

猜你喜欢

热点阅读