各种读取resources目录下文件的方法(图文解释)

14 篇文章 2 订阅
订阅专栏

引言

  我们写使用java写web项目时,有时需要将某些文件存放到resources目录下,之后我们需要在程序中去获取文件。此时就有一个重要的事情:如何获取文件的路径?
  下面我将给出八种获取resources的方式。

注意:有的可以在web项目中使用,有的则不可以在web项目中使用。

读取展示文件的工具方法

首先给出读取展示 文件的代码块:

/**
     * 需要有明确路径,因为需要输出显示,所以最好是文本文档:“.txt”、“.html”、“.js”等
     * @param fileInPath
     * @throws IOException
     */
    public static void getFileContent(Object fileInPath) throws IOException {
        BufferedReader br = null;
        if (fileInPath == null) {
            return;
        }
        if (fileInPath instanceof String) {
            //如果是字符串路径
            br = new BufferedReader(new FileReader(new File((String) fileInPath)));
        } else if (fileInPath instanceof InputStream) {
            //如果是输入流
            br = new BufferedReader(new InputStreamReader((InputStream) fileInPath));
        }
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    }

先获取路径再去获取文件

准备:getFile() getPath()须知

  我们使用:

this.getClass().getClassLoader().getResource("").[getPath()/getFile()];

这个命令去获取resource的路径,下面我打断点,可以看到resource的内容,里面有file,path。
在这里插入图片描述
如果是文件路径的话getFile和getPath效果是一样的,如果是URL路径的话getFile是带有参数的路径。
例如:
在这里插入图片描述

getResource(“”).getPath()获取resource路径

/**
     * 读取resources下的文件,getResource("")然后拼接
     * @param fileName
     * @throws IOException
     */
    public void function1(String fileName)throws IOException{
        String path = this.getClass().getClassLoader().getResource("").getPath();
        path = URLDecoder.decode(path,"UTF-8");
        System.out.println(path);
        String filePath = path + fileName;
        System.out.println(filePath);
        getFileContent(filePath);
    }

getResource(fileName).getPath()直接获取完整路径

/**
     * getResource(fileName)直接获取完整路径
     * @param fileName
     * @throws IOException
     */
    public void function2(String fileName)throws IOException{
        String path = this.getClass().getClassLoader().getResource(fileName).getPath();
        System.out.println(path);
        String filePath = URLDecoder.decode(path,"UTF-8");
        System.out.println(filePath);
        getFileContent(filePath);
    }

getResource(fileName).getFile()获取完整路径

/**
     * getFile()
     * @param fileName
     * @throws IOException
     */
    public void function3(String fileName)throws IOException{
        String path = this.getClass().getClassLoader().getResource(fileName).getFile();
        System.out.println(path);
        String filePath = URLDecoder.decode(path,"UTF-8");
        System.out.println(filePath);
        getFileContent(filePath);
    }

System.getProperty(“user.dir”)(不能在web应用使用)

/**
     * user.dir默认会定位到你的工程根目录,但是web项目不行如果是web项目会定位到tomcat的bin目录
     * @param fileName
     * @throws IOException
     */
    public void function7(String fileName)throws IOException{
        String rootPath = System.getProperty("user.dir");
        String filePath = rootPath+"/src/main/resources/"+fileName;
        getFileContent(filePath);
    }

getCanonicalPath();getAbsolutePath()

/**
     * 不能在web应用中使用。
     * @param fileName
     * @throws IOException
     */
    public void function8(String fileName)throws IOException{
        File directory = new File("");
        //规范路径:getCanonicalPath()方法返回绝对路径
        String rootCanonicalPath = directory.getCanonicalPath();
        //绝对路径:getAbsolutePath()方法返回文件的绝对路径,如果创建的时候使用的绝对路径返回绝对路径,创建的时候使用的相对路径,返回相对路径
        String rootAbsolutePath = directory.getAbsolutePath();
        System.out.println(rootCanonicalPath);
        System.out.println(rootAbsolutePath);
        String filePath = rootCanonicalPath+"/src/main/resources/"+fileName;
        getFileContent(filePath);
    }

直接去获取流

  现在主流的部署方式是将项目打成jar包部署。而在jar包中是没有路径的,因为系统会认为jar包是个文件。所以我们就要通过流的方式去获取文件。

getResourceAsStream获取流

/**
     * 直接获取流数据
     * @param fileName
     * @throws IOException
     */
    public void function(String fileName)throws IOException{
        InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);
        getFileContent(in);
    }

不使用getClassLoader获取流

/**
     * 不使用getClassLoader,直接获取resources下的文件。需要前面添加”/“
     * @param fileName
     * @throws IOException
     */
    public void function(String fileName)throws IOException{
        InputStream in = this.getClass().getResourceAsStream("/"+fileName);
        getFileContent(in);
    }

ClassPathResource类获取流


    /**
     * 通过ClassPathResource类获取,建议SpringBoot中使用
     * @param fileName
     * @throws IOException
     */
    public void function6(String fileName)throws IOException{
        ClassPathResource classPathResource = new ClassPathResource(fileName);
        InputStream in = classPathResource.getInputStream();
        getFileContent(in);
    }

Linux:Linux系统的简介、基础知识、最强学习路线(以Ubuntu系统为例—安装/各自命令行技能/文件系统/Shell脚本编程/权限网络和系统管理/高级语言编程)、常用案例(图文教程)之详细攻略
近期请国内外头部出版社可尽快私信博主!——心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,谦虚,自律,反思,成长,还算是比较正能量的博主,公益免费传播……内心特别想在AI界做出一些可以推进历史进程影响力的东西(兴趣使然,有点小情怀,也有点使命感呀)…
04-02 1万+
​ Linux:Linux系统的简介、基础知识、最强学习路线(以Ubuntu系统为例—安装/各自命令行技能/文件系统/Shell脚本编程/权限网络和系统管理/高级语言编程)、常用案例(图文教程)之详细攻略 目录 一、了解Linux的基础知识 二、安装Linux操作系统 三、理解Linux文件系统 四、掌握命令行技能 五、学习Shell脚本编程 六、权限、网络和系统管理 七、学习Linux下的高级语言编程
IDEA 创建一个Mybatis Maven项目的方法步骤(图文)
p1830095583的博客
03-13 232
这篇文章主要介绍了IDEA 创建一个Mybatis Maven项目的方法步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 第一步:先新建一个工程 直接next就行了,不用选内容,不然他会下载骨架会卡很久 第一个箭头是项目名称,第二个箭头是项目路径,根据自己需要修改就行了。新建好的项目是这样的。 第二步:我们需要添加一个web框架支持 右键你的项目然后选择Add Framework那一项。 选中Web Applicati
ResourceBundle与Properties读取maven中resources目录下的资源文件
11-24
这里面有详细的处理maven项目中resources目录下的资源文件,方便快捷的得到或设置资源文件中的内容,本人亲测,里面还有示例
九种方式,教你读取 resources 目录下的文件路径
Java知音
07-26 2295
点击关注公众号,实用技术文章及时了解前情提要本文中提供了九种方式获取resources目录文件的方式。其中打印文件方法如下:/** *根据文件路径读取文件内容 * *@paramfileInPath *@throwsIOException */ publicstaticvoidgetFileContent(ObjectfileInPath)...
SpringBoot下获取resources目录文件的常用方法
最新发布
u010479989的博客
08-29 1360
今天给大家带来SpringBoot下获取resources目录文件的常用方法,示例中的方法读取resources目录下的txt和xlsx文件,并将xlsx导出到excel的简单写法。
如何读取resources文件夹下的文件
LC的博客
01-07 6696
首先我们要明确一点,springboot项目是能读取到一些特殊文件夹下的文件比如static 所以我们要把需要被读取到的文件放在resources/static下面 第一步:把需要被读取到的文件放在resources/static下面 第二步:修改配置文件 <build> <plugins> <plugin> <groupId>org.springframework.boot</g
Java如何读取resources目录下的文件路径(九种代码示例教程)
热门推荐
06-02 1万+
Java如何读取resources目录下的文件路径(九种代码示例教程)
如何读取resources文件夹下的配置文件
怪咖@的博客
09-08 6568
假如我想要获取resources下的bean.properties文件,properties是以key,value形式存储,以下为文件内容。 读取一般有两种读取: 1、根据相对路径直接读取 InputStream inputStream = new FileInputStream("src/main/resources/bean.properties"); Properties properties = new Properties(); properties.load(inputStream); Enu
java 读取当前目录文件_Java获取当前路径和读取文件
weixin_30598047的博客
02-12 2962
下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径2、使用File提供的函数获取当前路径:File directory = new File("");//设定为当前文件夹System.out.println...
Swift从相册选择图片,图文混排并且可以保存、上传数据
麻豆_matou
10-16 3829
博主最近突发奇想想做一个自己的日记本App,在过程中遇到了一些坑,摸索了很久才做出一个简单的日记本功能。先来看看一下效果吧: 先来说说这次用到的一些东西吧: 1、UIImagePickerController:用来获取Photos里面的照片 2、UITexeView:用来做图文混排 3、NSKeyedArchiver和NSKeyedUnarchiver:保存和读取数据 具体的一些细节在过程
IDEA创建Mybatis项目(图文详解)
HaiMeng一起奋斗
03-12 5072
1. 创建maven项目 2. 导入Mybatis和MySQL需要的jar包 3. 创建实体类 4. 为实体类配置数据库信息 5. 创建实体类的mapper映射文件 6. 配置Mybatis文件 7. 创建SqlSessionFactory工厂类 8.创建TestMybatis进行测试mybatis
java读取resource目录文件方法示例
08-31
主要介绍了利用java读取resource目录文件方法,文中给出了详细的示例代码,相信对大家具有一定的参考借鉴,需要的朋友们下面来一起看看吧。
WinForm实现读取Resource中文件方法
09-04
主要介绍了WinForm实现读取Resource中文件方法,很实用的一个功能,需要的朋友可以参考下
浅谈Java工程读取resources中资源文件路径的问题
08-29
下面小编就为大家带来一篇浅谈Java工程读取resources中资源文件路径的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringBoot项目中读取resource目录下的文件(六种方法
weixin_63742275的博客
05-07 1万+
源码里还是方法三、方法四,只不过做了一些封装,更方便开发。2)启动jar包指令。
获取 /resources 目录资源文件的 9 种方法(抄的)
weixin_44887276的博客
05-12 2275
项目开发中,经常会有一些静态资源,被放置在resources目录下,随项目打包在一起,代码中要使用的时候,通过文件读取的方式,加载并使用;来源:https://blog.csdn.net/u011047968/article/details/107311462。本文中汇总整理了九种方式获取resources目录文件方法
获取 /resources 目录资源文件
lizhengyu891231的博客
02-03 513
获取 /resources 目录资源文件
Spring项目读取resource下的资源文件
邢慧鹏的博客
07-18 1574
Spring项目读取resource下的资源文件
SpringBoot读取Resource下文件的几种方式亲测可用记录一下
weixin_43969830的博客
03-25 198
最近在项目中涉及到Excle的导入功能,通常是我们定义完模板供用户下载,用户按照模板填写完后上传;这里待下载模板位置为resource/excelTemplate/test.xlsx,尝试了四种读取方式,并且测试了四种读取方式分别的windows开发环境下(IDE中)读取和生产环境(linux下jar包运行读取)。 第一种: ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");.
java 读取resource下文件
04-07
Java中可以通过ClassLoader来读取resource下的文件,具体步骤如下: 1. 获取ClassLoader对象 ```java ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); ``` 2. 通过ClassLoader对象获取资源路径 ```java URL url = classLoader.getResource("文件名"); ``` 3. 使用IO流读取文件内容 ```java InputStream inputStream = url.openStream(); // 使用IO流读取文件内容 ``` 完整示例代码如下: ```java ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL url = classLoader.getResource("test.txt"); if (url != null) { try (InputStream inputStream = url.openStream()) { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } ``` 注意:在使用ClassLoader.getResource方法时,文件名需要以"/"开头。例如,如果文件名为test.txt,需要写成"/test.txt"。
写文章

热门文章

  • git checkout 命令图文详解 43652
  • git branch 分支命令图文详解 20813
  • git status时有Untracked files(racked files(未跟踪)的文件,原因分析以及解决方案,git clean详解 19185
  • git reset 命令详解 git revert命令详解。 17819
  • Java实现图片上传功能(前后端:vue+springBoot) 15123

分类专栏

  • 开发素养
  • 设计模式 5篇
  • 算法 1篇
  • Java基础 10篇
  • Java开发知识 14篇
  • docker 3篇
  • git应用 7篇
  • 搞懂mysql 2篇
  • nginx 5篇
  • kafka 13篇

最新评论

  • Java实现图片上传功能(前后端:vue+springBoot)

    机智小袁: 请问是这个地方吗?!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase()

  • Java实现图片上传功能(前后端:vue+springBoot)

    WenQuQC: 犯了个低级错误 在判断后缀的时候 你应该去把图片后缀放到数组里面去一个一个拿出来遍历 而不是放到一个字符串 你那样怎么判断都是错的表情包

  • Java实现图片上传功能(前后端:vue+springBoot)

    机智小袁: DAO层只需要将service层生成的图片保存路径 以及 以及这个图片的标识,保存到数据库即可。以便之后再次访问时可以访问到该图片

  • Java实现图片上传功能(前后端:vue+springBoot)

    NANQIAO0427: 没有DAO层吗

  • 各种读取resources目录下文件的方法(图文解释)

    机智小袁: 如果想要发给用户下载,直接存入缓存区,发送即可。

大家在看

  • 024_net基于ASP.NET的视频点播系统的设计与实现2024_5gjvxer5 1782
  • 树的重心(题解)
  • 从程序小白到CTO的10年成长之路(5)
  • CyberLink PowerDirector v23 中文授权版
  • Javascript数据类型及转换

最新文章

  • 行为型模式--模版方法模式(图文详解)
  • 创造型模式-原型模式(场景体验-》方案解决===代码图解)
  • git rebase (合并代码和整理提交记录)图文详解
2023年12篇
2022年41篇
2021年9篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家上海主题商场美陈现价商场店庆外立面美陈蚌埠环保玻璃钢雕塑订做价格以花朵为元素的商场美陈点扬州仿铜玻璃钢雕塑浙江玻璃钢抽象雕塑南通多边形玻璃钢花盆长沙番禺玻璃钢人物雕塑邯郸玻璃钢人物雕塑厂家北京艺术商场美陈市场报价福建超市商场美陈费用广东商场美陈形式葫芦岛玻璃钢雕塑玻璃钢树脂人物雕塑玻璃钢恐龙雕塑服务龙岩企业玻璃钢雕塑沈阳商场美陈吉林创意玻璃钢雕塑市场金昌玻璃钢雕塑制作厂家沧州浙江玻璃钢人物雕塑厂家价格绍兴玻璃钢动物雕塑辽宁雕塑玻璃钢赣州玻璃钢雕塑厂招聘信息玻璃钢花盆不能种真植物吗三门峡玻璃钢仿铜雕塑厂淮南卡通玻璃钢雕塑上海主题商场美陈厂家供应四川自流井玻璃钢雕塑工业区河南户内玻璃钢雕塑图片组合式玻璃钢雕塑摆件销售企业香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化