Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

1.2. System

Java.version 運行時環境版本

java.vendor 運行時環境供應商

java.vendor.url 供應商的 URL

java.home 安裝目錄

java.vm.specification.version 虛擬機規範版本

java.vm.specification.vendor 虛擬機規範供應商

java.vm.specification.name 虛擬機規範名稱

java.vm.version 虛擬機實現版本

java.vm.vendor 虛擬機實現供應商

java.vm.name 虛擬機實現名稱

java.specification.version 運行時環境規範版本

java.specification.vendor Java 運行時環境規範供應商

java.specification.name Java 運行時環境規範名稱

java.class.version Java 類格式版本號

java.class.path Java 類路徑

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 用戶的當前工作目錄	
	

1.2.1. user.dir

		
public class Test {

	public static void main(String[] args) {
		System.out.println("Working Directory = " + System.getProperty("user.dir"));
		
		System.out.println(System.getProperty("user.home"));
		System.out.println(System.getProperty("java.version"));
		System.out.println(System.getProperty("os.name"));
		System.out.println(System.getProperty("java.vendor.url"));
	}
}
		
		

1.2.2. java.io.tmpdir

改變java.io.tmpdir的預設值

System.setProperty("java.io.tmpdir", "/vat/tmp");
System.out.println(System.getProperty("java.io.tmpdir"));
		

如果你希望從外部修改這個系統屬性的話,你可以使用-D這個參數,例如 java -Djava.io.tmpdir=/path/to/tmpdir

System.out.println(System.getProperty("java.io.tmpdir"));
		

1.2.3. 打印當前 Java 檔案的預設編碼

		
package cn.netkiller.test;

import java.nio.charset.Charset;

public class Test {

	public Test() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {

		System.out.println(System.getProperty("file.encoding"));    
		System.out.println(Charset.defaultCharset());   

	}

}
		
		

1.2.4. 自定義

		
	public static void main(String[] args) {
		try {
			Oracle oracle = new Oracle();
			if(System.getProperty("config") == null){
				System.exit(1);
			}
			oracle.openConfig(System.getProperty("config"));
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}
		
		

上面程序編譯打包後運行

		
neo@netkiller:~/project/Oracle$ java -jar -Dconfig=jdbc.properties target/oracle-0.0.1-SNAPSHOT.jar
				
		

1.2.5. System.in 標準輸入(Stdin)

標準輸入一般用於管道輸入,例如:

		
cat test.txt | java cn.netkiller.ipo.test.StdinToStdout
		
		

下面的程序例子裡從管道輸入,並從標準輸出打印。

		
package cn.netkiller.ipo.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class StdinToStdout {

	public StdinToStdout() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {

		String s = "";
		try {
			BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

			while ((s = stdIn.readLine()) != null) {
				System.out.println(s);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}
		
		

預設 BufferedReader 緩衝區比較小,無法處理大於1000 行的輸入,可以通過配置緩衝區來解決。

		
stdin = new BufferedReader(new InputStreamReader(System.in, "utf-8"), 1024 * 1024 * 1024); // 1G 緩衝區