温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java读写文件有哪几种方式

发布时间:2021-10-14 16:47:13 来源:亿速云 阅读:118 作者:柒染 栏目:编程语言

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("...");

  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 中)。

  使用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读写文件有哪几种方式问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI