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:解决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日
    浏览(9)
  • 解决Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource

    解决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日
    浏览(12)
  • 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日
    浏览(11)
  • 报错 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日
    浏览(14)
  • The bean‘ dataSource‘, defined in class path resource具体错误在下面和解决办法

    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日
    浏览(9)
  • 【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日
    浏览(12)
  • Caused by: java.io.FileNotFoundException: class path resource [datasourc.properties] cannot be opene

    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日
    浏览(16)
  • JAVA基础 - SLF4J: Class path contains multiple SLF4J bindings

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

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

    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日
    浏览(15)
  • Error creating bean with name ‘sqlSessionFactory‘ defined in class path resource [application-config

    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日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包