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. Hashmap的Hash()

    JDK7: public final int hashCode() {            return Objects.hashCode(getKey()) ^ Objects.hashCode( ...

  2. mvc中AntiForgeryToken的实现方式--看Mvc源码

    通过 AntiForgeryWorker的GetHtml()方法生成html --input hide元素--value=要验证的值,并生成cookie--用于保存需要验证的值. 类中的AntiFor ...

  3. JAVA自学作业01

    JAVA自学作业01 1.Hello World 程序 class HelloWorld{ public static void main(String args[]){ System.out.pri ...

  4. 优先队列重载<运算符

    https://vjudge.net/problem/POJ-3190 #include<iostream> #include<cstdio> #include<queu ...

  5. SharePoint 配置PowerShell任务计划

    前言 最近,有这么个需求,需要定时为SharePoint更新内容,所以,就想到了PowerShell命令和任务计划(Windows自带的功能,英文叫Task Schedule,在开始菜单里就能找到), ...

  6. Python随机字符串验证码

    def code_get(self): source = ['] #数字验证码 # source = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I','J', ...

  7. 【PMP】项目生命周期和开发生命周期

    一.定义 项目生命周期:指项目从启动到完成所经历的一系列阶段. 开发生命周期:项目生命周期内通常有一个或多个阶段与产品.服务或成果的开发相关,这些阶段称为开发生命周期. 二.生命周期 预测型生命周期( ...

  8. 关于web项目创建后WEB-INF下面没有出现web.xml的解决方法

    提供两种解决方案: 第一种:创建完项目后,需要手动创建出web.xml 第一步:选取创建的项目名称右击 第二步:eclipse的同学找到 java EE Tools 中的 下图画圈部分.  MyEcl ...

  9. logrus日志使用详解

    1.logrus特点 golang标准库的日志框架很简单,logrus框架的特点: 1)完全兼容标准日志库 六种日志级别:debug, info, warn, error, fatal, panic ...

  10. Go使用详解

    1.什么是Go keep it simple stupid的编程语言 2.安装 以Ubuntu为例 # 下载安装包 wget https://storage.googleapis.com/golang ...