首页 > 技术文章 > ※JAVA获取资源文件内容※

zhuo-zui 2020-01-16 09:16 原文

※使用ResourceUtils工具类(基于GraphQL查询):

 1 package cn.itcast.haoke.dubbo.api.graphql;
 2 
 3 import cn.itcast.haoke.dubbo.server.service.HouseResourcesService;
 4 import graphql.GraphQL;
 5 import graphql.schema.GraphQLSchema;
 6 import graphql.schema.idl.RuntimeWiring;
 7 import graphql.schema.idl.SchemaGenerator;
 8 import graphql.schema.idl.SchemaParser;
 9 import graphql.schema.idl.TypeDefinitionRegistry;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.context.annotation.Bean;
12 import org.springframework.stereotype.Component;
13 import org.springframework.util.ResourceUtils;
14 
15 import javax.annotation.PostConstruct;
16 import java.io.File;
17 import java.io.IOException;
18 
19 @Component
20 public class GraphQLProvider {
21     private GraphQL graphQL;
22     @Autowired
23     private HouseResourcesService houseResourcesService;
24     @PostConstruct
25     public void init() throws IOException{
26         File file = ResourceUtils.getFile("classpath:haoke.graphqls");
27         GraphQLSchema graphQLSchema = buildSchema(file);
28         this.graphQL = GraphQL.newGraphQL(graphQLSchema).build();
29     }
30     private GraphQLSchema buildSchema(File file){
31         TypeDefinitionRegistry typeRegistry = new SchemaParser().parse(file);
32         RuntimeWiring runtimeWiring = buildWiring();
33         SchemaGenerator schemaGenerator = new SchemaGenerator();
34         return schemaGenerator.makeExecutableSchema(typeRegistry,runtimeWiring);
35     }
36     private RuntimeWiring buildWiring(){
37         return RuntimeWiring.newRuntimeWiring().type("HaokeQuery",builder->builder.dataFetcher("HouseResources"
38                 ,enviroment->{
39             Long id = enviroment.getArgument("id");
40             return this.houseResourcesService.queryHouseResourcesById(id);
41                 })).build();
42     }
43     @Bean
44     public GraphQL graphQL(){
45         return graphQL;
46     }
47 }

※使用注解方式:

♬属性文件:mock-data.properties

mock.indexMenu={"data":{"list":[{"id":1,"menu_name":"二手房","menu_logo":"home","menu_path":"/home","menu_status":1,"menu_style":null},{"id":2,"menu_name":"新房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":3,"menu_name":"租房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":4,"menu_name":"海外","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":5,"menu_name":"地图找房","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":6,"menu_name":"查公交","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":7,"menu_name":"计算器","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null},{"id":8,"menu_name":"问答","menu_logo":null,"menu_path":null,"menu_status":null,"menu_style":null}]},"meta":{"status":200,"msg":"测试数据"}}

  ♬编写配置文件属性类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySource;

/*用于读取配置文件中的内容*/
@Configuration
@PropertySource("classpath:mock-data.properties")
@ConfigurationProperties(prefix = "mock")
@Data
public class MockConfig {
    private String indexMenu;
    private String indexInfo;
      ...
}

※基于org.apache.ibatis.io.Resources类获取字节输入流读取文件

package cn.itcast.mybatis01.dao;

import cn.itcast.mybatis01.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import static org.junit.Assert.*;

public class MybatisTest {
    public static void main(String[] args) throws IOException {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory的构建者对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //3.使用构建者创建工厂对象SqlSessionFactory
        SqlSessionFactory factory = builder.build(in);
        //4.使用SqlSessionFactory生产SqlSession对象
        SqlSession SqlSession = factory.openSession();
        //5.使用SqlSession创建dao接口的代理对象
        IUserDao userDao = SqlSession.getMapper(IUserDao.class);
        //6.使用代理对象执行查询所有方法
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
        SqlSession.close();
        in.close();
    }
}

 

※使用类加载器,并利用工具包转为字符串:

import org.apache.commons.io.IOUtils;

/*读取文件内容*/
    public static String readFileToString(String fileName){
        try {
            return IOUtils.toString(GraphQLSchema.class.getClassLoader().getResourceAsStream(fileName),"UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

推荐阅读