System類的作用詳解
阿新 • • 發佈:2019-02-12
1) 輸入輸出流
System.out(標準終端輸出流)
System.err(標準錯誤輸出流)
System.in(標準輸入流)
我們可以重定向這些流,比如可以把System.out的輸出重定向到一檔案中去
System.setOut(PrintStream) 標準輸出重定向
System.setErr(PrintStream) 標準錯誤輸出重定向
System.setIn(InputStream) 標準輸入重定向
例如下:
/* ByteArrayOutputStream是用來快取資料的(資料寫入的目標(output stream原義)),
* 向它的內部緩衝區寫入資料,緩衝區自動增長,當寫入完成時可以從中提取資料。
* 由於這個原因,ByteArrayOutputStream常用於儲存資料以用於一次寫入*/
ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileWriter fw = new FileWriter( new File( "e:/log.txt"), true);
System.setOut (new PrintStream(bos));
//寫各種操作/輸出等,這些print會暫時儲存在ByteArrayOutputStream的陣列中
System.out.println("first insert");
System.out .println("second insert");
//最後把ByteArrayOutputStream陣列中的資料append到檔案中
fw.append(bos.toString());
fw.close();
2) 取當前時間
System.currentTimeMillis() 返回 long型值。這個值可以轉換至Date或Timestamp值。 它一般還可以用來計算程式執行的時間.例如下:
Long t1 = System.currentTimeMillis ();
Thread.sleep (10);
Long t2 = System.currentTimeMillis ();
System. out.println(t2 - t1);
// 此處列印10
3) 陣列拷貝
System.arraycopy(Object src, int src_position, Object dst, int dst_position, int length)
利用System.arraycopy進行陣列的拷貝效率是最高的,一般情況下我們自己很少直接用到這個方法,但在集合類的內部中都大量使用了這個方法。例如下:
int[] array1 = { 1, 2, 3, 4, 5 };
int[] array2 = { 4, 5, 6, 7, 8 };
int[] array3 = new int[8];
System.arraycopy (array1, 0, array3, 0, 5);
System.arraycopy (array2, 2, array3, 5, 3);
// 此時array3 = {1, 2, 3, 4, 5, 6, 7, 8}
4)存取系統的Properties
System.getProperties():取得當前所有的Properties,例如下:
System.out.println(System.getProperty ("java.version" ));
//Java執行環境版本:[1.6.0_13]
System.out.println(System.getProperty ("java.home" ));
//Java主目錄:[D:\Program Files\myeclipse10.0\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre]
System.out.println(System.getProperty ("file.separator" ));//檔案分隔符:[\]
System.out.println(System.getProperty ("path.separator" ));//路徑分隔符:[;]
System.out.println(System.getProperty ("user.name" ));//使用者名稱:[Administrator]
System.out.println(System.getProperty ("user.dir" ));//使用者當前工作目錄:[D:\MyEclipse
10\ javatest]
5)Library
System.loadLibrary(String libname):載入native的動態庫。可以用C寫JNI的庫,然後在java中通過native方法來呼叫。
6)SecurityManager
System.setSecurityManager(SecurityManager s)和System.getSecurityManager():設定與取得系統的security class --------------------------------------------------------------------------------------------------------------- 現在傳送在CSDN上的文章都能在手機端檢視啦,走路上班、閒暇之餘可以看看手機,共勉共進!
System.setSecurityManager(SecurityManager s)和System.getSecurityManager():設定與取得系統的security class --------------------------------------------------------------------------------------------------------------- 現在傳送在CSDN上的文章都能在手機端檢視啦,走路上班、閒暇之餘可以看看手機,共勉共進!