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的值实际上就是一个字符数组 ...
随机推荐
- UVALive - 6436 —(DFS+思维)
题意:n个点连成的生成树(n个点,n-1条边,点与点之间都连通),如果某个点在两点之间的路径上,那这个点的繁荣度就+1,问你在所有点中,最大繁荣度是多少?就比如上面的图中的C点,在A-B,A-D,A- ...
- java 传参数时 类型后跟 3个点 "..." 的意义
对照代码和运行结果便知"..." 的意义 import java.util.ArrayList; public class StringDemo { public static v ...
- postgres数据库参数配置说明介绍
访问 1. listen_addresses 监听访问地址 2. port 监听端口 3. max_connections 最大连接数 4. 性能 1. shared_buffers PostgreS ...
- Android源码设计模式分析开源项目
简述 该项目通过分析Android系统中的设计模式来提升大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀 的设计中领悟模式的实际运用以及它适用的场景,避免在实际 ...
- Orchard 介绍
0.Introduction 下载地址 https://orchard.codeplex.com/ Orchard 是由微软公司创建,基于 ASP.NET MVC 技术的免费开源内容管理系统: 可用于 ...
- asp.net 导出 Excel
/// <summary> /// List 数据导出Excel /// </summary> /// <param name="list">数 ...
- 安装php环境
安装xampp 安装zend studio 安装Composer-Setup 安装Z2 ZendFramework-2.4.9 I can install successfully using the ...
- iOS 的各种识别码
在iOS系统中,获取设备唯一标识的方法有很多: 1. x UDID (Unique Device Identifier,已过期) 2. x OPEN UDID (已过期) 3. 广告标示符(IDFA- ...
- NOIP2013PUZZLE
#include<cstdio> #include<cstring> #define MIN(A,B) (A)<(B)?(A):(B) using namespace s ...
- httpclient post请求例子(无参数名与带参数名的例子),多线程并发处理
版本:4.1 带参数名的情况 HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url ...