关于路径的说法:
1.classpath:指的是编译后的class文件,xml,properties等配置文件所在的目录 2.maven的项目中,classpath为项目名/target/classses 3.如果是普通的项目,可能是项目名/bin,或者项目名/build/classes等等 getResource是java.lang.Class的方法,也就是由字节码对象进行调用的方法 1.getResource接收一个字符串参数,如果以/开头,就是在classpath跟目录下进行查找 2.如果不是/开头,就在调用getResource的字节码对象所在的目录下进行查找 java中进行资源的获取,经常用到的是calss.getResource和ClassLoader.getgetResource 1.注意:获取资源时,获取的时编译之后的class文件资源,而不是对应的java源代码文件getResource和getResourceAsStream方法区别
1.相当于在进行获取getResource资源文件之后,再次使用字节输入流进行读取,new InputStream()读取后得到的字节字节流对象相对路径的获得:
1.java项目中的文件是相对于项目的根目录 web项目中的文件路径视不同的服务器不同而不同(tomcat是相对于tomcat安装的目录\bin) 2.类加载目录的获得(当运行时某一类时获取其装载目录) java项目中的class路径一般时src下的路径就是对应的classpath路径 原因时会将对应的calsses文件的目录和当前的src目录在同一级目录下,也就相当于对应的src目录 的本身就是原来的/平级的目录资源 classLoader获取的时对应的classpath目录下的资源 class获取的是当前包下的资源,没有默认的当前资源---跟目录是classpath目录web项目根目录的获取:发布之后的路径信息
1.从servlet角度出发,使用当前应用的进行获取的化,获取的是当前引用的 ServletContext s1=this.getServletContext(); String temp=s1.getRealPath("/"); (关键) 2.此时获取的是对应的数据当前应用的全路径,也就是虚拟路径之前的路径 getRealpath:获取的是当前项目的路径名称,称之为真实路径.只是全部的项目路径的名称 3.从HttpServletsRequest角度触发 request.getSession().getServletContext().getRealPath("/"); //获取的是当前的请求的真实路径,也就是请求发送的真实来源路径信息classpath的获取:
1.web项目中的资源文件,默认存放在web下的WEB-INF/classes/路径下,获取的资源文件是class文件才能被内存进行读取 2.在web项目中进行获取对应的动态资源文件的话,就必须使用的是对应的资源文件目录才能进行获取 /WEB-INF/classes目录下 3.所有的文件信息的读取:项目名/calsspath----》动态资源文件 项目名/资源名称----》静态资源名字属性文件的读取:
1.xml,properties文件的读取存在于src目录下,这个目录下的资源文件同样被加载到对应的classpath目录下 但是此时不会被加载解析成对应的二进制文件,只有当需要文件的内容的时候,此时将会进行文件的加载进入内存中, 此刻的文件将会被翻译成二进制文件存储在内存中,通过对应的信息引用的信息的获取 2.在计算机使用的信息的资源都是通过读取对应的二进制才能够继续宁一定的翻译,配置文件和资源文件的存在都是 在对应的数据文件目录下进行数据的获取 普通的java项目: 1.表面上是在src下的目录下继续宁编写对应的java源代码,配置文件的书写一般都是在src目录下的进行创建 2.但是真正执行的时候,在编译期必然会设定一个编译完成的目录进行存放对应的class等计算机能够看懂的目录文件夹 3.一般会根据编译器进行设定对应的jvm加载的目录文件夹 idea(out/prodection/项目名/src的副本编译文件)--->src下的所有文件被编译完成后存放的文件夹 计算机的读取过程就是在从该文件中进行加载进入内存,包括配置文件,设定的级别是当前平级目录 也就是当前的文件目录的存储路径,读取文件的时候,直接就是文件名,因为和src目录下的文件同级目录 eclipse(build/classes/src下的副本编译文件夹)--->src下的所有文件被编译完成后存放的文件夹数据信息 计算机的读取过程就是从该文件夹中进行读取,加载进入内存中,此刻的级别信息就是当前使得存放的文件夹信息数据 web项目: 1.Web项目的执行同样是根据读取对应的二进制文件来进行工作的 2.web项目中所有的文件都有一个统一的文件夹 eclipse(webRoot统一文件夹),在执行的时候,所有的静态资源将会被加载到到该文件夹下,动态资源的加载将会存储早 在webRoot/WEB-INF/classess文件夹下,也就是src目录下进行编译完成的字节码文件将会被复制一份 副本将会被传送到该目标文件下,配置文件等都在这个classes文件下,计算机通过读取这个文件夹从而工作 idea(web统一文件夹),在执行的时候,所有的静态资源将会被加载到到该文件夹下,动态资源的加载将会存储早 在web/WEB-INF/classes文件夹下,也就是src下的目录下进行编译完成的字节码文件将会被复制一份 副本将会被传送到该目标下,配置文件等,都在这个classes文件下,计算机通过读取整个文件夹从而工作 jar包的读取操作: 1.普通的java项目: 读取的jar的时候,一般是编译器会设定一个对应的jar包管理区,提供对应的jar包文件的引用,能够让外部进行读取到jar包中的信息 jar的的本身会被jvm进行解析和读取,从而可以在编码的过程中进行引用,jar包没有被加载到资源文件读取器中的话将不会被识别成jar包 一般设定一个对应的目录进行确定对应的jar信息,将jar添加到项目中,被该项目的jvm所进行读取解析 2.web项目的读取: web项目的中所有的java字节码文件被复制一份到WEB-INF/calsses下的目录中,但是这些字节码的运作必须要依赖于外部的提供的环境以及jar包 所以直接在web文件夹下的文件中进行设定一个对应的lib目录,能够让对应的class文件执行完成依赖,同时还能运作在对应的项目中所持有