Mike的分享空间
java速查笔记
date: 2016.08.04; modification:2016.08.05
目录:
1 系统属性
Java提供的java System.getProperties()方法是获取运行环境的系统参数的
属性
解释
java.version
Java 运行时环境版本
java.vendor
Java 运行时环境供应商
java.vendor.url
Java 供应商的 URL
java.home
Java 安装目录
java.vm.specification.version
Java 虚拟机规范版本
java.vm.specification.vendor
Java 虚拟机规范供应商
java.vm.specification.name
Java 虚拟机规范名称
java.vm.version
Java 虚拟机实现版本
java.vm.vendor
Java 虚拟机实现供应商
java.vm.name
Java 虚拟机实现名称
java.specification.version
Java 运行时环境规范版本
java.specification.vendor
Java 运行时环境规范供应商
java.specification.name
Java 运行时环境规范名称
java.class.version
Java 类格式版本号
java.class.path
当前类所在的路径
java.library.path
加载库时搜索的路径列表
java.io.tmpdir
默认的临时文件路径
java.compiler
要使用的 JIT 编译器的名称
java.ext.dirs
一个或多个扩展目录的路径
os.name
操作系统的名称
os.arch
操作系统的架构
os.version
操作系统的版本
file.separator
文件分隔符(在 UNIX 系统中是"/")
path.separator
路径分隔符(在 UNIX 系统中是":")
line.separator
行分隔符(在 UNIX 系统中是"/n")
user.name
用户的账户名称
user.home
用户的主目录
user.dir
用户的当前工作目录
打印上述属性的代码:
System.out.println("Java 运行时环境版本 : " + System.getProperty("java.version"));
System.out.println("Java 运行时环境供应商 : " + System.getProperty("java.vendor"));
System.out.println("Java 供应商的 URL : " + System.getProperty("java.vendor.url"));
System.out.println("Java 的安装路径 : " + System.getProperty("java.home"));
System.out.println("Java 虚拟机规范版本 : " + System.getProperty("java.vm.specification.version"));
System.out.println("Java 虚拟机规范供应商 : " + System.getProperty("java.vm.specification.vendor"));
System.out.println("Java 虚拟机规范名称 : " + System.getProperty("java.vm.specification.name"));
System.out.println("Java 虚拟机实现版本 : " + System.getProperty("java.vm.version"));
System.out.println("Java 虚拟机实现供应商 : " + System.getProperty("java.vm.vendor"));
System.out.println("Java 虚拟机实现名称 : " + System.getProperty("java.vm.name"));
System.out.println("Java 运行时环境规范版本 : " + System.getProperty("java.specification.version"));
System.out.println("Java 运行时环境规范供应商 : " + System.getProperty("java.specification.vendor"));
System.out.println("Java 运行时环境规范名称 : " + System.getProperty("java.specification.name"));
System.out.println("当前类的格式版本号 : " + System.getProperty("java.class.version"));
System.out.println("当前类所在的路径 : " + System.getProperty("java.class.path"));
System.out.println("加载库时搜索的路径列表 : " + System.getProperty("java.library.path"));
System.out.println("默认的临时文件路径 : " + System.getProperty("java.io.tmpdir"));
System.out.println("要使用的 JIT 编译器的名称 : " + System.getProperty("java.compiler"));
System.out.println("一个或多个扩展目录的路径 : " + System.getProperty("java.ext.dirs"));
System.out.println("操作系统的名称 : " + System.getProperty("os.name"));
System.out.println("操作系统的架构 : " + System.getProperty("os.arch"));
System.out.println("操作系统的版本 : " + System.getProperty("os.version"));
System.out.println("当前操作系统的文件分隔符 : " + System.getProperty("file.separator"));
System.out.println("当前操作系统的路径分隔符 : " + System.getProperty("path.separator"));
System.out.println("当前操作系统的行分隔符 : " + System.getProperty("line.separator"));
System.out.println("用户的当前账户名称 : " + System.getProperty("user.name"));
System.out.println("用户的当前工作目录 : " + System.getProperty("user.dir"));
System.out.println("用户的主目录 : " + System.getProperty("user.home"));
2 文件与文件夹操作
2.1 遍历文件夹例程
为了突出主要内容, 未增加错误处理代码.
// path: 要访问的路径
// lastNode: 层次数组, 每递归一次, 在该数组后面增加一个元素,
指明被访问的节点是否是本级目录的最后一个节点,
用于控制输出内容的前缀及样式. 最外层调用传入{true}.
public static void tree(String path, boolean lastNode[]) {
File f = new File(path);
String prefix = "";
int level = lastNode.length - 1;
// Prefix
for (int i = 1; i < level; i++) {
if (lastNode[i]) {
prefix += " ";
} else {
prefix += "| ";
}
}
if (level > 0) {
if (lastNode[level]) {
prefix += "`-- ";
} else {
prefix += "|-- ";
}
}
if (f.exists()) {
String name;
if (level == 0) {
name = f.getAbsolutePath(); // 顶级打印绝对路径
} else {
name = f.getName(); // 子级只打印名称
}
if (f.isDirectory()) { // 判断是否为文件夹
System.out.println(prefix + "\033[01;34m" + name + "\033[0m"); // 打印文件夹名
String flist[] = f.list(); // 获取所有子文件列表
for (int i = 0; i < flist.length; i++) {
String sub = flist[i];
boolean lastSubNode;
if (i == (flist.length - 1)) {
lastSubNode = true;
} else {
lastSubNode = false;
}
boolean newLastNode[];
int len = 0;
newLastNode = new boolean[lastNode.length + 1];
System.arraycopy(lastNode, 0, newLastNode, 0, lastNode.length);
newLastNode[lastNode.length] = lastSubNode;
tree(path + "/" + sub, newLastNode);
}
} else {
System.out.println(prefix + name); // 打印文件名
}
} else {
System.out.println(prefix + path + " does not exist.");
}
}
tree("/tmp/xxx", new boolean[]{true});
3 IO流
3.1 分类
按流向分:
输入流
输出流
按功能分:
结点流(node stream): 直接从指定的位置(如磁盘文件或内存区域)读或写.
过滤器(filters): 除结点流之外的流都是过滤器. 也有的叫处理流或包装流. 这种流在基本的节点流外进行一层包装, 所以一般构造它们时, 需要传入基本的节点流.
按处理数据分
字节流: InputStream是所有字节输入流的祖先, 而OutputStream是所有字节输出流的祖先.
字符流: Reader是所有读取字符串输入流的祖先, 而writer是所有输出字符串的祖先.
InputStream, OutputStream, Reader, Writer都是抽象类. 所以不能直接new.
3.2 IO常用类
类
方向
数据
功能
备注
InputStream(抽象)
In
字节
//
OutputStream(抽象)
Out
字节
//
FileInputStream
In
字节
节点流
FileOutputStream
Out
字节
节点流
ByteArrayInputStream
In
字节
节点流
把数组像文件一样流化
ByteArrayOutputStream
Out
字节
节点流
把数组像文件一样流化
-------------------------------
------
--------------
--------
------------------------------------
BufferedInputStream
In
字节
包装流
BufferedOutputStream
Out
字节
包装流
DataInputStream
In
----
包装流
可以把基本数据类型与String从流取出
DataOutputStream
Out
----
包装流
可以把基本数据类型与String塞到流中
ObjectInputStream
In
----
包装流
可以把对象从流取出(序列化)
ObjectOutputStream
Out
----
包装流
可以把对象塞到流中(反序列化)(transient)
===============================
======
==============
========
====================================
Reader(抽象)
In
字符
//
Writer(抽象)
Out
字符
//
FileReader
In
字符
节点流
FileWriter
Out
字符
节点流
-------------------------------
------
--------------
--------
------------------------------------
BufferedReader
In
字符
包装流
BufferedReader
Out
字符
包装流
###############################
######
##############
########
####################################
InputStreamReader
In
字节->字符
包装流
解码
OutputStreamWriter
Out
字符->字节
包装流
编码
-------------------------------
------
--------------
--------
------------------------------------
PrintStream(System.out/err)
Out
字节
包装流
打印 (可用System.setOut重定向, FileDescriptor.out定向会来)
InputStream(System.in)
Out
字节
包装流
打印(System.out, System.err)
Human knowledge belongs to the world
Contact: wytabc@126.com
声明: 本站如有侵权行为请及时通知至以上邮箱