重定向输出流实现程序日志
来源:互联网 发布:房价数据库 编辑:程序博客网 时间:2024/06/06 03:29
说明:这是java经典编程实例300中的第13个实例,主要是为了说明使用setOut()方法来设定新的输出流。因为out成员变量被定义为final类型的,无法直接重新复制,故可以通过setOut()方法来来设置新的输出流。
程序:
package char3;
import java.io.FileNotFoundException;
import java.io.PrintStream;
public class RedirectOutputStream {
publicstatic void main(String args[] ){
try{
PrintStreamout=System.out;
PrintStreamps=new PrintStream("/log.txt");
intage=18;
System.out.println("年龄变量成功电议,初始值为18");
Stringsex="女";
System.out.println("性别变量定义成功,初始值为女");
Stringinfo="这个"+sex+"孩子,应该有"+age+"岁了";
System.out.println("整合两个变量为info字符串变量,其结果是:");
System.out.println(out);
System.out.println("程序运行完毕,请查看日志文件。");
}
catch(FileNotFoundExceptione){
e.printStackTrace();
}
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(这里故意没有使用SetOut())
System.out.println("整合两个变量为info字符串变量,其结果是:");
System.out.println(out);
System.out.println("程序运行完毕,请查看日志文件。");
输出结果:
年龄变量成功电议,初始值为18
性别变量定义成功,初始值为女
这个"+sex+"孩子,应该有"+age+"岁了
整合两个变量为info字符串变量,其结果是:
java.io.PrintStream@1db9742
程序运行完毕,请查看日志文件。
修改程序:
System.setOut(out);
这一次应该准确的复现书本程序了吧?
年龄变量成功电议,初始值为18
性别变量定义成功,初始值为女
这个"+sex+"孩子,应该有"+age+"岁了
整合两个变量为info字符串变量,其结果是:
程序运行完毕,请查看日志文件。 ????
这是为什么?查找原因中………….
找到了:
PrintStreamout=System.out;
PrintStream ps=new PrintStream("/log.txt");
intage=18;
System.out.println("年龄变量成功电议,初始值为18");
这里应该:
PrintStreamps=new PrintStream("/log.txt");
System.setOut(ps);
intage=18;
把这个鬼鬼祟祟的System.setOut(ps);给丢掉了。
然后就是这个样子了:
程序运行完毕,请查看日志文件。
可是不对啊,那个日志呢?好,看看日志去哪了……
桌面没有…….(开个玩笑)
找log的文件去..........
年龄变量成功电议,初始值为18
性别变量定义成功,初始值为女
整合两个变量为info字符串变量,其结果是:
程序这就运行完毕了,但是要学习点东西啊,好吧,我去查资料去:
setOut()方法---该方用于虫子分配System类的标准输出流。
声明:public static voidsetOut(printStream out)
setErr()方法
该方法重新分配System类的标准错误输出流。
声明:public static void setErr(PrintStream err)
setLn()方法—该发放将重新设置System类的in成员变量,即标准输入流。
声明:public static void setIn(inputStream in)
PrintStream:
是一个字节打印流,System.out对应的类型就是PrintStream。
它的构造函数函数可以接收三种数据类型的值。
1,字符串路径。
2,File对象。
3,OutputStream。
PrintWriter:
是一个字符打印流。构造函数可以接收四种类型的值。
1,字符串路径。
2,File对象。
对于1,2类型的数据,还可以指定编码表。也就是字符集。
关于InputStream.read()
在从数据流里面读取数据时,经常使用InputStream.read()方法,从流里面每次读取一个字节,效率非常低。最好使用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,一次读取多个字节。
(ps:本身文章里边都是截图的,可是没法直接复制进去,悲剧)
- 重定向输出流实现程序日志
- 重定向输出流实现程序日志
- 重定向输出流实现程序日志
- 重定向输出流实现程序日志
- 重定向输出流实现程序日志
- 重定向输出流实现程序日志
- 重定向输出流简单实现程序日志
- 笔记:重定向输出流实现程序日志
- 重定向输出流实现程序日志(学习)
- java重定向输出流实现程序日志
- 300.3重定向输出流实现程序日志
- 例004重定向输出流实现程序日志
- 重定向输出流实现程序日志【20171115练习】
- 重新定向输出流实现程序日志
- Java基础应用之基本语法(重定向输出流实现程序日志)
- 源码:重定向输入流实现程序日志
- 重新定向输出流,实现java程序日志功能。
- 程序日志输出(简单的重定向)
- Visual.C#.2010从入门到精通].(Visual.C#.2010.Step.By.Step)读书笔记 属性、字段(十四)
- python日期操作
- 放贷速度都是对方
- CentOS 6 使用 yum 安装MongoDB及服务器端配置
- 驅動相關注意細節
- 重定向输出流实现程序日志
- 点击radio控件后的文字,选中控件
- Xamarin.iOS启动图片过渡及广告展示
- 如何解决versions锁死的问题(mac)-个人总结
- PHP CURL的几个例子
- 扩展一个boot的插件—tooltip&做一个基于boot的表达验证
- java.lang.NoSuchMethodError: javax.servlet.ServletContext
- win7 64位系统下 使用加载工具,加载驱动时提示“驱动服务启动失败”或者“此驱动程序被阻止加载”
- BZOJ 1295 SCOI2009 最长距离 SPFA+暴力