Java中的路径问题

简介:

java中路径问题看似不大,但是有时候细节问题导致的是 当前路径不存在 常常伴随左右。来总结一下路径问题吧。

路径不存在:

首先必须注意的是 如果FileInputStream中的路径如果不存在的话,就会报错,如果路径存在而文件不存在 就会创建对应的文件。

/代表位置

分两种情况:
目标资源是给谁使用的。

给服务器使用的: / 表示在当前web应用的根目录(webRoot
给浏览器使用的: /  表示在webapps的根目录下

举例:
转发:就是服务器调用,就是内部调用,/代表当前项目:

request.getRequestDispatcher("/target.html")  
.forward(request, response);

请求重定向:就是浏览器调用。

response.sendRedirect("/day11/target.html");

html页面的超连接href:浏览器调用。

response.getWriter().write("<html><body><a href=  
'/day11/target.html'>超链接</a></body></html>");

html页面中的form提交地址:浏览器调用。

response.getWriter().write("<html><body><form action=  
'/day11/target.html'><input type='submit'/></form>  
</body></html>");

. 地址问题

. 代表java命令运行目录。

Java项目:

正常情况下.代表Class的位置,即bin目录下。

而Eclipse会自动执行一个动作 就是Set pathClass=class位置。
这样 你在哪里都可以运行这个class,但是.代表的却是当前运行的位置。
所以.代表当前项目的根目录

JavaWeb项目:

java运行命令 在tomcat/bin目录下

读取文件。在web项目下不要这样读取。因为.表示在tomcat/bin目录下,而此时没有src

File file = new File("./src/db.properties");
FileInputStream in = new FileInputStream(file);

结论: 在web项目中, . 代表在tomcat/bin目录下开始,所以不能使用这种相对路径。

使用web应用下加载资源文件的方法: 适应任何项目以及其他电脑

  1. getRealPath读取,返回资源文件的绝对路径
String path = this.getServletContext().getRealPath  
("/WEB-INF/classes/db.properties");
File file = new File(path);
FileInputStream in = new FileInputStream(file);
  1. getResourceAsStream() 得到资源文件,返回的是输入流
InputStream in = this.getServletContext().  
getResourceAsStream("/WEB-INF/classes/db.properties");

得到web应用路径:

web应用路径:部署到tomcat服务器上运行的web应用名称

    //1.得到ServletContext对象
    ServletContext context = this.getServletContext();
    
    2.得到web应用路径
    String contextPath = context.getContextPath();    
    System.out.println(contextPath);
    //应用到请求重定向
    response.sendRedirect(contextPath+"/index.html");
目录
相关文章
|
6月前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
80 1
|
6月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
6月前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
45 1
|
27天前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
57 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
52 4
|
2月前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
35 3
|
4月前
|
前端开发 JavaScript 安全
|
4月前
|
Java Scala 流计算
实时计算 Flink版产品使用问题之Docker镜像中的Java路径和容器内的Java路径不一致,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决
Java编译器注解运行和自动生成代码问题之Maven编译时设置生成的源码的文件夹路径问题如何解决