本文目錄一覽:
- 1、JAVA中如何把system.out.println里的內容寫入文件
- 2、Java中System.err怎麼理解
- 3、java問題,動態修改java類裡面的一個方法
- 4、java System 類里out和err怎麼賦值的?沒找到源碼 initializeSystemClass也沒有找到….求大神講解一下
- 5、java的類型參數是什麼意思
JAVA中如何把system.out.println里的內容寫入文件
可以用JAVA里的System.in的重定向來解決.
setIn(InputStream in)重新分配「標準」輸入流。
setOut(PrintStream out)重新分配「標準」輸出流
setErr(PrintStream err)重新分配「標準」錯誤輸出流。
看下面的例子:
import java.io.*;
class Redirecter
{
public static void redirect(InputStream in,PrintStream out,PrintStream err)
{
System.setIn(in);
System.setOut(out);
System.setErr(err);
}
public static void copy()throws IOException
{
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(reader);
String data = br.readLine();
while(data!=null data.length()!=0)
{
System.out.println(data);
System.err.println(data);
data = br.readLine();
}
}
public static void main(String [] args)throws IOException
{
//你先在C:建個111.txt的文件哦自己測試下
InputStream in = new BufferedInputStream( new FileInputStream(“C:\\111.txt”));
PrintStream out = new PrintStream
( new BufferedOutputStream(new FileOutputStream(“C:\\out.txt”)));
PrintStream err = new PrintStream
( new BufferedOutputStream(new FileOutputStream(“C:\\err.txt”)));
redirect(in,out,err); //由111.txt輸入,輸出到out.txt中
copy();
in.close();
out.close();
err.close();
}
}
Java中System.err怎麼理解
err是運行期異常和錯誤反饋的輸出流的方向。 System.err.println只能在屏幕上實現列印,即使你重定向了也一樣。 你使用err列印出的 字元串,在eclipse的console會顯示成紅色的哦。
java問題,動態修改java類裡面的一個方法
//創建文件輸出流
PrintStream ps=new PrintStream(“./log.txt”);
//設置新的輸出流 System.setErr(ps);
System類的out、err、in成員變數都是final類型的,不能直接複製,要通過setOut()、setErr(),setIn()方法來改變流。上例是通過setOut()方法改變輸入流輸入位置,將輸出重定向到一個固定的目錄,實現程序日誌
e.printstacktrace 默認用的就是System的輸出
java System 類里out和err怎麼賦值的?沒找到源碼 initializeSystemClass也沒有找到….求大神講解一下
這是 initializeSystemClass 源碼,就在 System 類中,在System類的源碼中搜索一下 initializeSystemClass 就可以找到了。
private static void initializeSystemClass() {
props = new Properties();
initProperties(props); // initialized by the VM
sun.misc.VM.saveAndRemoveProperties(props);
lineSeparator = props.getProperty(“line.separator”);
sun.misc.Version.init();
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
setIn0(new BufferedInputStream(fdIn));
setOut0(newPrintStream(fdOut, props.getProperty(“sun.stdout.encoding”)));
setErr0(newPrintStream(fdErr, props.getProperty(“sun.stderr.encoding”)));
loadLibrary(“zip”);
// Setup Java signal handlers for HUP, TERM, and INT (where available).
Terminator.setup();
sun.misc.VM.initializeOSEnvironment();
Thread current = Thread.currentThread();
current.getThreadGroup().add(current);
// register shared secrets
setJavaLangAccess();
sun.misc.VM.booted();
}
其中這幾句代碼就是用來初始化,標準輸入流,標準輸出流,標準錯誤輸出流的。
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
setIn0(new BufferedInputStream(fdIn));
setOut0(newPrintStream(fdOut, props.getProperty(“sun.stdout.encoding”)));
setErr0(newPrintStream(fdErr, props.getProperty(“sun.stderr.encoding”)));
這其中 setOut0 就是用來設置 System.out 的,setOut0 看不到源碼的,它是在java虛擬中的。
java的類型參數是什麼意思
應該是泛型中提到的一個概念,T 表示傳入任意參數,在給一個泛型類初始化的時候我們要給它傳入具體的值,一般是一個類型,如String,Integer或者是一個java bean類型的數據,這時候,String是作為一個參數傳過去的,但它表示的是一個字元串類型,也就是傳入了String類型的參數。此時String就是一個參數,一個類型參數。如Liststring testList = new Liststring(); 一個泛型數組,我們要規定該list中只能傳入字元串怎麼辦,這時就給他傳入一個String類型參數,只要傳入其他類型就會在編譯期報錯,這也是泛型的一個優點。
原創文章,作者:IM0X3,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/129328.html