9.classpath、类.class.getClassLoder.getResourceAsStream()、FileInputStream(“path“)

这篇具有很好参考价值的文章主要介绍了9.classpath、类.class.getClassLoder.getResourceAsStream()、FileInputStream(“path“)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 文章来源地址https://www.toymoban.com/news/detail-404744.html

一、二者的区别。

(1)两者读取文件的位置不同。

(2)跨平台路径问题。

(3)classpath是什么?


 

一、二者的区别。

(1)两者读取文件的位置不同。

类.class.getClassLoader().getResourceAsStream()方法和FileInputStream("path")方法的区别在于两者读取文件的位置不同:

1.类.class.getClassLoader().getResourceAsStream()方法是从classpath中读取文件,可以读取jar包中的文件,适合于读取类路径下的资源文件。

2.FileInputStream("path")方法则是从指定的文件路径中读取文件,文件路径可以是绝对路径或相对路径。适合于读取非类路径下的文件。

另外,使用类.class.getClassLoader().getResourceAsStream()方法可以避免跨平台路径问题,因为它总是从classpath中读取文件。而直接使用文件路径可能存在跨平台路径问题,需考虑转换路径符号等问题。

(2)跨平台路径问题。

注:是指,跨平台路径问题,由于不同操作系统使用的路径分隔符不同,例如Windows下使用的是反斜杠""而Linux和Mac OS下使用的是斜杠"/",因此在编写跨平台的程序时,需要注意路径的书写方式。

在Java中,使用File类创建文件或目录时,如果路径采用了错误的分隔符,就会报出文件不存在或文件路径无效等异常。为了解决这个问题,可以使用File.separator作为分隔符,该符号会根据操作系统的不同自动转换成相应的分隔符,保证路径的正确性。

而在使用直接文件路径读取文件时,可能需要考虑路径分隔符的差异性问题,对于不同操作系统下的路径分隔符进行适配,否则程序可能会因为找不到文件而出错。

因此,在Java程序中,为了避免跨平台路径问题,建议在处理文件操作时使用相对路径或ClassLoader.getResource()等方法来读取文件。

(3)classpath是什么?

把资源文件放在classpath下,是指将需要读取的资源(如配置文件、图片、音频、视频等)放置在Java程序的类路径中,使得程序可以通过类路径来获取这些资源文件。

当程序需要读取资源文件时,可以使用`ClassLoader.getResource()`或者`Class.getResource()`等方法来获取资源。这些方法提供了一种基于classpath查找资源文件的流程,无论项目部署在何处,都能够正确地读取资源文件。同时,这种方式还可以避免路径问题,让程序更加易于移植和调试。

例如,在Maven项目中,可以把资源文件放在`src/main/resources`目录下,Maven会自动将该目录下的资源文件打包到class路径中。在程序中,可以使用以下代码加载资源文件:

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(inputStream);

这样就可以方便地读取位于classpath下的资源文件了。

在Java中,resource指的是程序运行过程中需要的一些资源文件,如配置文件、图片、音频等。这些资源文件通常不是Java代码本身的一部分,而是需要在运行时动态加载的。如果将这些资源文件打包到Jar包中,就需要将其放在classpath下。因此,通常我们会将资源文件放在src/main/resources目录下,Maven项目中则默认将该目录作为classpath。这样,在程序运行时,可以通过ClassLoader来访问classpath下的所有资源文件。

总之,resource与classpath的关系在于,资源文件被打包到Jar包中时需要放在classpath下,才能在程序运行时被正确地加载和访问。

 

 

到了这里,关于9.classpath、类.class.getClassLoder.getResourceAsStream()、FileInputStream(“path“)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot:解决Property ‘spring.profiles‘ imported from location ‘class path resource 问题

    一、在学习SpringBoot配置profile的时候,.yml文件内容明明跟老师敲的一模一样,但还是报 org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property \\\'spring.profiles\\\' imported from location \\\'class path resource [application.yml]\\\' is invalid and should be replaced with \\\'spring.config.activate.on-profile\\\' [ori

    2024年02月16日
    浏览(24)
  • Class path contains multiple SLF4J bindings.问题原因及解决方案

    问题背景 在进行logback的日志输出测试时,显示如下错误 2、原因 根据上面的错误提示,存在多个SLF4J bindings绑定,即存在多个slf4j的实现类,按上图所示这两个实现分别是 logback-classic-1.2.6和slf4j-log4j12-1.6.1 ,我们需要的是logback而不是log4j, 3、解决方案 因此,我们去掉log4j的

    2024年02月11日
    浏览(34)
  • 解决Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource

    Error creating bean with name \\\'sqlSessionFactory\\\' defined in class path resource 出错背景:项目中使用mybatisplus开发,涉及到了xml文件,现在需要下线个功能,所以就先把相关的代码注释掉了,但是在启动的时候不知道为什么会报这个错:Error creating bean with name \\\'sqlSessionFactory\\\' defined in class pat

    2024年02月11日
    浏览(36)
  • 报错 Error creating bean with name ‘elasticsearchTemplate‘ defined in class path resource

    报错信息如下: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name \\\'indexController\\\': Unsatisfied dependency expressed through field \\\'articleService\\\'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name \\\'articleServiceImpl\\\': Unsatisfied dependen

    2023年04月08日
    浏览(33)
  • The bean‘ dataSource‘, defined in class path resource具体错误在下面和解决办法

    报错信息表明,在声明 org.apache.shardingsphere.shardingjdbc.spring.boot 包下的 SpringBootConfiguration中的dataSource这个bean时出错, 原因是有一个同名的 dataSource 的bean在com.alibaba.druid.spring.boot.autoconfigure包下的DruidDataSourceAutoConfigure类加载时已经声明了。 而我们需要用到的是 shardingjdbc包下的

    2024年02月15日
    浏览(32)
  • Caused by: java.io.FileNotFoundException: class path resource [datasourc.properties] cannot be opene

    异常: Caused by: java.io.FileNotFoundException: class path resource [文件名] cannot be opened because it does not exist 原因: 资源无法打开,因为它不存在 在Maven项目里面资源 默认生成的类路径是src/main/java ,如果你所需要的文件不在这个目录下,项目编译器输出里就不会有该文件(即便你的项目

    2024年02月07日
    浏览(35)
  • 【SpringBoot】SLF4J: Class path contains multiple SLF4J bindings.

    SpringBoot整合j2cache,启动时报错。 类路径包含多个SLF4J绑定,这可能会导致SLF4J绑定冲突,从而引发启动时的错误。 修改pom.xml,排除j2cache-core和j2cache-spring-boot2-starter中的slf4j-simple依赖,以解决SLF4J绑定冲突问题。 通过以上排除操作,我们成功解决了SLF4J绑定冲突的问题,确保

    2024年02月11日
    浏览(30)
  • JAVA基础 - SLF4J: Class path contains multiple SLF4J bindings

    告警描述 告警显示,在类路径下包含了多个SLF4J的绑定,然后选择了一个实现类。 如何解决 方案一 根据项目的实际情况,删除多余的JAR包,多个JAR包路径如下: 方案二 查看项目的POM文件中是否有重复的SLF4J引入,如何查看?: 找到多余的SLF4J,然后将其排除:

    2024年02月04日
    浏览(38)
  • Error creating bean with name ‘s‘ defined in class path resource [applicationContext.xml]: Initiali.

    在用AOP写小项目的时候出现了这个问题 Error creating bean with name \\\'s\\\' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.ExceptionInInitializerError 翻译过来大概的意思就是  创建在类路径资源[applicationContext.xml]中定义的名为“s”的bean时出错:

    2024年02月11日
    浏览(31)
  • Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource [application-config

    学习spring框架时遇到一个问题。 记录一个错误:   摘出最主要的提示: 主要问题Error creating bean with name \\\'sqlSessionFactory\\\' defined in class path resource [applicationContext.xml]: Invocation of init method failed;在创建bean时,调用初始化方法失败。从而引出后面集中嵌套的错误。 定位到最终代码

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包