• 技术文章 >Java >Java基础

    java中如何读取文件

    尚2022-01-12 15:30:15原创57444

    java中读取文件的方法:1、通过使用【java.io】方法读取,相对于当前用户目录的相对路径读取;2、通过使用【java.lang.ClassLoader】方法读取,相对于classpath的相对路径读取。

    java中读取文件的方法:

    java读取文件的两种方法:java.io和java.lang.ClassLoader

    // java.io:  
    File  file  =  new  File("...");  
    FileInputStream  fis  =  new  FileInputStream("...");  
    FileReader  fr  =  new  FileReader("...");  
    
    //ClassLoader:  
    ClassLoader  loader  =  XXXClass.class.getClassLoader();   
    ClassLoader  loader2  =  Thread.currentThread().getContextClassLoader();  
    
    URL  url  =  loader.getResource("...");  
    File  file  =  new  File(url.getFile());  
    InputStream  input  =  loader.getResourceAsStream("...");

    1、java.io 包中的类总是根据当前用户目录来分析相对路径名,也就是说相对路径是否好使,取决于 user.dir 的值。系统属性 user.dir 是 JVM 启动的时候设置的,通常是 Java 虚拟机的调用目录,即执行 java 命令所在的目录。

    对于 tomcat/jboss 容器,user.dir 是 %home/bin%/ 目录,因为这个目录就是我们启动 web 容器的地方

    在 eclipse 中运行程序的时候,eclipse 会将 user.dir 的值设置为工程的根目录

    用户目录可以使用 System.getProperty("user.dir") 来查看

    所以说,使用 java.io 读取文件,无论是相对路径,还是绝对路径都不是好的做法,能不使用就不要使用(在 JavaEE 中)。

    2、使用ClassLoader

    Class.getResource() 有 2 种方式,绝对路径和相对路径。绝对路径以 / 开头,从 classpath 或 jar 包根目录下开始搜索;

    相对路径是相对当前 class 所在的目录,允许使用 .. 或 . 来定位文件。

    ClassLoader.getResource() 只能使用绝对路径,而且不用以 / 开头。

    这两种方式读取资源文件,不会依赖于 user.dir,也不会依赖于具体部署的环境,是推荐的做法(JavaEE)

    如何选取

    java.io:

    相对于当前用户目录的相对路径读取;注重与磁盘文件打交道或者纯 java project 中使用。

    虽然 ClassLoader 方式更通用,但是如果不是 javaEE 环境,要定位到 classpath 路径下去读文件是不合理的。

    java.lang.ClassLoader:

    相对于 classpath 的相对路径读取;建议在 javaEE 环境中都使用这种方式。

    通常,ClassLoader 不能读取太大的文件,它适合读取 web 项目的那些配置文件,如果需要读取大文件,还是要用 IO 包下的,可以先通过 ClassLoader 获取到文件的绝对路径,然后传给 File 或者其他对象,用 io 包里的对象去读取会更好些。

    更多java知识请关注java基础教程

    以上就是java中如何读取文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 读取文件
    上一篇:java中如何判断一个数是否是素数(质数) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java中的锁是什么• java判断字符串是否包含数字• java读取txt中文乱码• java中判断数组是否为空的方法
    1/1

    PHP中文网