java的类.class.getClassLoder.getResourceAsStream()和FileInputStream(“path")加载文件的区别

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

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

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

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

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

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

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

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

      ———————————————— 版权声明:本文为CSDN博主「醉梦依依惜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/khmff/artic…