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

目录

 

一、二者的区别。

(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下,才能在程序运行时被正确地加载和访问。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值