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的值实际上就是一个字符数组 ...
随机推荐
- 转载VC6.0 子窗口和父窗口
这个是我周一在一家公司做的上机题中的一道,当场没做出来.我当时只跟考官说了设计思路,是带回来查了几本资料书之后才完成的.因为有半个学期没用VC开发了……,最近一直都在实践ASP.NET相关的…… 建立 ...
- Concurrent Request:Inactive phase,No Manager status
Symptom 随便submit一个request,发现几乎所有的Concurrent Manager都为No Manager状态,Phase为Inactive. Solution 一个Concurr ...
- Windows 以及 Xcode下编译调试 libcurl 源码
curl 这个工具大家都很熟悉. 前几天因为要跟踪curl的实现细节, 不得不设法搭建curl的调试工程. 我们分别在windows visual studio 和 mac 上的 xcode 下搭建调 ...
- IDEA配置hibernate
当做完struts2的demo之后,发现这些和myeclipse下面几乎没有差别. 唯一觉得不好的就有一点,model的映射文件 .hbm.xml这个无法通过model来生成,所以是手写,有点麻烦.这 ...
- TSQL--逻辑查询处理
1. 查询处理可分成逻辑处理和物理处理,逻辑处理上各阶段有特定的顺序,但为优化查询,在保证结果集正确的条件下,物理处理顺序并不按照逻辑处理顺序执行,如果在INNER JOIN时,WHERE语句中的过滤 ...
- mysql 数据库或者表空间使用查询
直接上语句 查所有数据库占用空间大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data ...
- windows 10 自适应布局
https://msdn.microsoft.com/library/windows/apps/dn894631.aspx Use visual state triggers to build UI ...
- Verify the Developer App certificate for your account is trusted on your device.
1.报错内容 Could not launch "CH5203" Verify the Developer App certificate for your account is ...
- 使用git提交代码流程
一.拉取最新代码 一般在本地进行开发时,都是切换到自己的dev分支进行开发,当开发完成需要进行代码提交,在进行代码提交前需要先进行拉取远程仓库代码,进行更新,但是此时会提示需要将本地代码进行commi ...
- 《快学Scala》第八章 继承