本文目录一览:
- 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/n/129328.html