import java.io.File;
import java.net.URL; /**
* java相对路径、绝对路径及类路径的测试
*/
public class Test { /**
* 测试相对路径是相对谁
* -- 相对于部署项目的文件夹(AppServer)
*/
// @org.junit.Test
public void testRelativePath() throws Exception { String filePath = "test//t.txt";
File file = new File(filePath);
if (!file.exists()) {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
} System.out.println(file.getAbsolutePath());
// E:\workspace\AppServer\test\t.txt
} /**
* 测试绝对路径
*/
// @org.junit.Test
public void testAbsolutePath() throws Exception {
String filePath = "D:\\path\\test.txt"; File file = new File(filePath);
if (!file.exists()) {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
} System.out.println(file.getName()); // test.txt
System.out.println(file.getAbsolutePath()); // D:\path\test.txt
} /**
* 获取ClassPath(类路径)
*/
// @org.junit.Test
public void testClassPath() throws Exception {
/*
来个对比(各种情况下ClassPath的值):
1) 直接junit运行方法时打印:(给这个类单独创建了一个ClassPath)
/E:/workspace/AppServer/target/test-classes/ 2) Eclipse启动tomcat时打印(tomcat插件中的ClassPath):
/E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppServer/WEB-INF/classes/ 3) 单独启动tomcat时打印(tomcat中的类路径):
/E:/apache-tomcat-7.0.62/webapps/AppServer/WEB-INF/classes
*/
// 获取类路径
URL url = this.getClass().getResource("/");
// file:/E:/workspace/AppServer/target/test-classes/ String path = url.getPath(); // 看看类路径下都有啥
File file = new File(path); // 直接junit运行方法
for (File f : file.listFiles()) {
System.out.println(f.getName()); // 还没有文件被编译,啥也没有
}
} /**
* 测试路径中的正反斜杠
*/
// @org.junit.Test
public void testSprit() throws Exception {
// 文件已经存在
String filePath = null; /*
* 正斜杠'/'
*/
filePath = "D:/path/test.txt"; // D:\path\test.txt
filePath = "D://path//test.txt"; // D:\path\test.txt
filePath = "D:/path//test.txt"; // D:\path\test.txt
filePath = "D:////path////test.txt"; // D:\path\test.txt /*
* 反斜杠'\'
*/
filePath = "D:\\path\\test.txt"; // D:\path\test.txt
// filePath = "D:\path\test.txt"; // 编译都通过不了啊,\t是一个制表符
// filePath = "D:\\\path\\test.txt"; // 编译都通过不了啊 // 正反斜杠混合使用
filePath = "D:\\path/test.txt"; // D:\path\test.txt
filePath = "D:/path\\test.txt"; // D:\path\test.txt File file = new File(filePath);
System.out.println(file.getAbsolutePath());
} @org.junit.Test
public void testName() throws Exception { String filePath = null; filePath = "D:/path/test.txt"; // D:/path/test.txt
System.out.println(filePath); filePath = "D://path//test.txt"; // D://path//test.txt
System.out.println(filePath); filePath = "D:/path//test.txt"; // D:/path//test.txt
System.out.println(filePath); filePath = "D:////path////test.txt"; // D:////path////test.txt
System.out.println(filePath); /*
* 反斜杠'\'
*/
filePath = "D:\\path\\test.txt"; // D:\path\test.txt
System.out.println(filePath); // 正反斜杠混合使用
filePath = "D:\\path/test.txt"; // D:\path/test.txt
System.out.println(filePath); filePath = "D:/path\\test.txt"; // D:/path\test.txt
System.out.println(filePath); } /**
* 总结:
* 1) 相对路径
*
* 相对路径:是相对于application(服务)目录所在的路径。
*
* 比如:
* 相对路径为"test/t.txt", 服务目录为:"D:/App"
* 则t.txt的绝对路径为:"D:/App/test/t.txt"
*
* 2) 绝对路径
*
* 没什么好说的。
*
* 3) 类路径
*
* a. Eclipse中右键运行(为当前类单独创建了一个类路径):
* /E:/workspace/AppServer/target/test-classes/
*
* b. Eclipse中启动tomcat(tomcat插件中的类路径)::
* /E:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/AppServer/WEB-INF/classes/
*
* c. tomcat中启动start.bat(tomcat服务中的类路径):
* /E:/apache-tomcat-7.0.62/webapps/AppServer/WEB-INF/classes
*
* 4) 路径中的正反斜杠(/ \)
*
* a. '/' 正斜杠
* 怎么用都是对的,无论是单斜杠,双斜杠,多斜杠 或 混合使用,都能正确的解析文件路径。
*
* b. '\' 反斜杠
* 只能使用双斜杠'\\'.
* 单斜杠,多斜杠 或 混合使用都会报错。编译都不能通过。
*
* c. 正反斜杠混合使用
* 反斜杠只能使用双斜杠'\\', 正斜杠随意。 都能正确解析出路径。 "D:/aaa\\/bb.txt",这种写法也能解析。
*
* d. 反双斜杠'\\',运行时打印字符串时会变成'\'。
* 正斜杠,运行时打印字符串,打印结果和编译前一致。
*/ }

java相对路径、绝对路径及类路径的更多相关文章

  1. [JAVA] JAVA 类路径

    Java 类路径 类路径是所有包含类文件的路径的集合. 类路径中的目录和归档文件是搜寻类的起始点. 虚拟机搜寻类 搜寻jre/lib和jre/lib/ext目录中归档文件中所存放的系统类文件 搜寻再从 ...

  2. jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件

    之前的代码中,以下代码很多时候并不是固定的: private static String url = "jdbc:mysql://localhost:3306/day1029?useUnic ...

  3. Java类路径

    Java 类路径告诉 java 解释器和 javac 编译器去哪里找它们要执行或导入的类. 类(您可能注意到的那些 *.class 文件)可以存储在目录或 jar 文件中,或者存储在两者的组合中, 但 ...

  4. java类路径classpath和包

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. java类路径classpath

    java编译器编译.java文件和java虚拟机执行.class文件时的路径和写法不一样. 在没有设置任何classpath环境变量的情况下,javac可以编译全路径的.java文件.例如: java ...

  6. java获取当前项目或类路径

    // 获取当前项目的目录 File directory = new File("");// 参数为空 String courseFile = directory.getCanoni ...

  7. maven打包报错:在类路径或引导类路径中找不到程序包 java.lang

    刚下了个新项目,跑了下maven报错了: E:\workspace\portalframe>mvn clean install [INFO] Scanning for projects... [ ...

  8. Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

    Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/7887449 ...

  9. java 获取类路径

    package com.jason.test; import java.io.File; import java.io.IOException; import java.net.URL; public ...

随机推荐

  1. Flask路由

    @app.route() methods:当前url地址,允许访问的请求方式 @app.route("/info", methods=["GET", " ...

  2. 3ds max学习笔记(九)-- 实例操作(路径阵列)

    栅栏 路径阵列也叫间隔工具,将选择的物体沿指定的路径进行复制.实现物体在路径上的饿均匀分布. 选择需要分布的物体对象,在视图中绘制二维图形做为路径线条. 1.选择线条,制作路径 2.选择需要分布的物体 ...

  3. HTML常用标签2

    1 <!DOCTYPE>标签 声明位于文档最前面的位置,处于<html>标签之前.告知浏览器文档使用哪种规范 模式: 1. BackCompat:怪异模式,浏览器使用自己的怪异 ...

  4. TDG今日成立!

    大家好我们是来自土1603-3的佟天宇.杨子浩.吴强.周泊辰(从左到右) 我们的团队名称是  TDG队 我们的口号是:“Legends Never Die!” 队员简介: 佟天宇 个性:儒雅随和 特长 ...

  5. python之文件处理

    第一:文件基本处理流程 f=open('text') one_line=f.readline() print('one_line:',one_line) #读取一行 print('分割线'.cente ...

  6. openstack 之~openstack各组件关系

    认识openstack 第一:openstack是什么? OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项 ...

  7. Hibernate(11)_基于外键的双向1对1

    一.基于外键的双向1对1 对于基于外键的1-1关联,其外键可以存放在任意一边,在需要存放外键一端,增加many-to-one元素.为many-to-one元素增加unique="true&q ...

  8. Unity Inspector面板常用的属性

    在扩展Unity的时候,往往会用到一些属性,这里将常用的列一下. 1.属性只读: #if UNITY_EDITOR using UnityEditor; #endif using UnityEngin ...

  9. Css3实现波浪效果3-静态波纹

    一.外框宽度等比例3个椭圆拼合 .container { position: absolute; width: 400px; height: 200px; border: 5px solid rgb( ...

  10. Go语言栈定义及相关方法实现

    // stack 栈 package Algorithm import ( "errors" "reflect" ) // 栈定义 type Stack str ...