FS及CacheFS类解读
Javac中有FSInfo与CacheFSInfo两个类,CacheFSInfo继承了FSInfo类,这两个类的主要功能就是通过map缓存Jar文件,核心代码如下:
private Map<File,Entry> cache = new ConcurrentHashMap<File,Entry>();
private static class Entry {
File canonicalFile;
boolean exists;
boolean isFile;
boolean isDirectory;
List<File> jarClassPath;
}
首先要了解一些File的API,如下:
public class TestFilePath {
public static void main(String[] args) {
// D:\newWorkspace\tmpdir
System.out.println(System.getProperty("user.dir"));
try {
System.out.println("-----默认相对路径:取得路径不同------");
File file1 = new File("..\\src\\test1.txt");
// ..\src\test1.txt
System.out.println(file1.getPath());
// D:\newWorkspace\tmpdir\..\src\test1.txt
System.out.println(file1.getAbsolutePath());
// D:\newWorkspace\src\test1.txt
System.out.println(file1.getCanonicalPath());
System.out.println("-----默认相对路径:取得路径不同------");
File file = new File(".\\test1.txt");
// .\test1.txt
System.out.println(file.getPath());
// D:\newWorkspace\tmpdir\.\test1.txt
System.out.println(file.getAbsolutePath());
// D:\newWorkspace\tmpdir\test1.txt
System.out.println(file.getCanonicalPath());
System.out.println("-----默认绝对路径:取得路径相同------");
File file2 = new File("D:\\workspace\\test\\test1.txt");
// D:\workspace\test\test1.txt
System.out.println(file2.getPath());
// D:\workspace\test\test1.txt
System.out.println(file2.getAbsolutePath());
// D:\workspace\test\test1.txt
System.out.println(file2.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}
得出结论:
1、getPath()会得到file构造函数参数的值
2、getAbsolutePath()当参数为相对路径时会得到文件的绝对路径+相对路径,当参数为绝对路径时直接得到绝对路径
3、getCanonicalPath()当参数为相对路径时,解析符号,得到文件的绝对路径,当参数为绝对路径时得到文件的绝对路径
下面了解一下Jar包相关的信息。
FS及CacheFS类解读的更多相关文章
- JAVA String、StringBuffer、StringBuilder类解读
JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...
- Bundle类解读
1.Bundle bundle = Platform.getBundle("org.eclipse.ui.views"); Platform是eclipse平台运行时的核心类,它是 ...
- JavacProcessingEnvironment类解读
JavacProcessingEnvironment类的继承体系如下: 其中含有很多内部类,最重要的是迭代注解处理器相关的类,如下:
- package-info类解读
类不能带有public.private访问权限.package-info.java再怎么特殊,也是一个类文件,也会被编译成package-info.class,但是在package-info.java ...
- javac的Resolve类解读
方法1:isInitializer() /** An environment is an "initializer" if it is a constructor or * an ...
- Java类文件结构及javac的ClassReader类解读
首先来看一下ClassFile,类注释如下: A JVM class file. Generic Java classfiles have one additional attribute for c ...
- C#封装CRUD到SqlHelper类解读
1.简单说明一下,一般情况下,数据库连接字符串是在App.config文件中进行配置,然后再在代码中进行引用.因此,我们在这里先看一下App.config文件. 首先看需要添加的内容: 参数说明: n ...
- JDK常用类解读--StringBuffer、StringBuilder
上一篇博客讲到String对象一旦被创建该内容就不能被修改了如: String s = "hello world"; s.substring(6); s.replace(" ...
- JDK常用类解读--String
一.字符串的不变性: 文章使用的源码是jdk1.8的.(下同) 1.首先可以看到`String`是`final`类,说明该类不可继承,保证不会被子类改变语义 2.String的值实际上就是一个字符数组 ...
随机推荐
- mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回 ...
- docker把系统盘占满后的恢复
docker报[Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed ...
- scvmm sdk之ddtkh(二)
ddtkh,dynamic datacenter toolkit for hosters,原先发布在codeplex开源社区,后来被微软归档到开发者社区中,从本质上来说它是一个企业级应用的套件,集成了 ...
- TSQL--如何突破PRINT的8000大限
相信很多DBA都喜欢干的一件事就是拼SQL语句,我也不例外,但是PRINT只能打印4000的Unicode string或8000的Non-unicode string, 这个蛋疼的限制会导致过长的s ...
- 在相应目录下新建或读取xml文件
string path = AppDomain.CurrentDomain.BaseDirectory+"UserContent1.xml"; //判断相应路径下文件是否存在 不存 ...
- C++ windows进程间通信
最近一直在找共享内存同步的操作,恰好这篇文章有讲解.本文转载:https://blog.csdn.net/bing_bing_bing_/article/details/82875302 方便记录,c ...
- 【OCP-052】052最新考试题库分析整理-第7题
7.Which is true about external tables? A) The ORACLE_DATAPUMP access driver can be used to write dat ...
- “全栈2019”Java异常第十三章:访问异常堆栈跟踪信息
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- zTree第三章,异步加载,前端
zTree异步加载 ---------------------------------------------------------------------------------- 具体详见API ...
- ROS(机器视觉)
通过ROS打开摄像头 查看话题信息和消息 图像数据: 默认调用笔记本自带摄像头,如需调用外接摄像头,需要将其中video0改成video1.