• JavaWeb及Java读取文件路径总结


    1、File读取方式

    1.1、硬盘绝对路径

    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        String path = "E:\path\1.txt";
        File file = new File(path);
        System.out.println(file.getAbsolutePath());//输出读取到的文件路径
    }
    

    1.2、相对路径


    显然读取路径出现问题了

    原理:Java文件读取的机制了:如果你直接这样写路径new File(" a.txt");那么tomcat就会从程序启动的地方去找这个文件(Java项目中也是如此)

    web应用是从有tomcat来执行,而tomcat由tomcat/bin/startup.bat启动的

    2、ServletContext().getRealPath

    [ 只能在Servlet中,或是Servlet的上层类中使用, 比如SpringMVC,Controller ]

    对于ServletContext().getRealPath(“路径名A”);这个方法,无论你的路径名A是什么,ServletContext().getRealPath()方法底层都会在路径名A前拼上当前web应用的硬盘路径

    只要你的文件在web应用的中的相对路径不变,那么不论你的web应用如何更换服务器环境,都能动态的获取当前服务器环境的绝对文件路径。

    3.ClassLoader类的getResource()

    [ Java都能用,但是必须知道类加载器的路径 ]

    类加载器是从你的web应用的WEB-INFclass文件夹下找.class文件来加载的。所以呢,你要找的web应用中的文件只要相对于你的class文件夹找就可以了。

    其实类加载器也是搞出来一个绝对硬盘路径来找文件的,只是这个绝对路径是随着web应用的路径变化而变化的,就不存在web应用换了服务器环境找不到资源的问题了。

    4.Target与webapp目录

    webapp目录是访问的目录,target目录有时候需要重新编译才会将resource的内容更新。classpath获取到的是target的目录。

    转载:

    https://blog.csdn.net/qq_20597149/article/details/79872579

  • 相关阅读:
    【转载】C++汇编器、连接器
    【转载】vi的使用命令
    JDK,SDK,JRE概念
    iOS 使用xmpp做聊天客户端
    cocopods安装
    用XMPP实现完整Android聊天项目
    xmpp发送文件
    ember.js学习笔记
    html5 drag and drop
    jquery 数组深拷贝
  • 原文地址:https://www.cnblogs.com/biturd/p/12623162.html
Copyright © 2020-2023  润新知