Java学习笔记之IO(十五):PrintStream打印流

来源:互联网 发布:马云淘宝初期如何推广 编辑:程序博客网 时间:2024/06/05 06:07
package com.io.g_sequence;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import org.junit.Test;/* * 打印流:PrintStrean,可以打印任意类型的数据,而且在打印数据之前都会将数据先转换成字符串再进行打印; *  * 打印流作用: * 1、输出任何类型的数据到文件上; * 2、收集异常的日志信息; */class Person{String name;int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "[name=" + name + ", age=" + age + "]";}}public class Demo5 {// 使用输入字节流写数据@Testpublic void test1() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 建立数据输出通道FileOutputStream out = new FileOutputStream(file);// 输出数据:// 问题:为什么写入的数据是97,而打开记事本看到的却是 a ?// 因为数据97是以字节流的形式写入的,而记事本本身就具有解码的功能,所以打开记事本的时候会自动将97解码成a;out.write(97);// 由于记事本显示的数据都是以字符串的形式,所以如果想向文件中写入97,可以使用下面的方法:// 还可以直接使用 PrintStream 输出任意类型的数据;out.write("97".getBytes());// 关闭资源out.close();}// 使用打印流输出数据@Testpublic void test2() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 创建一个打印流PrintStream print = new PrintStream(file);// 输出数据:可以打印任意类型的数据print.println(97);print.println('a');print.println("aa");print.println(3.14);print.println(true);char[] buf = {'a', 'b', 'c', 'd'};print.println(buf);Person person = new Person("张三", 22);print.println(person); // 打印对象就是调用对象的 toString() 方法;// 关闭资源print.close();}@Testpublic void test3() throws IOException{// 找到目标文件File file = new File("D:\\a.txt");// 建立打印流PrintStream print = new PrintStream(file);// 该输出语句也是使用了PrintStream打印流;从源码可以看出,out就是在System类中维护的一个PrintStream对象;// 默认情况下,标准的输出流就是向控制台输出数据的;但是也可以重置标准的输出流对象,指定输出的位置;System.out.println("Hello World");System.setOut(print); // 重置标准输出流,将数据输出到文件中;System.out.println("我在文件中。");}// 收集异常的日志信息@Testpublic void test4() throws IOException{// 找到目标文件File file = new File("D:\\2017-10-12.log");// 建立数据输出通道;(true:追加信息)FileOutputStream out = new FileOutputStream(file, true);// 建立打印流:此方法输出的信息是覆盖的//PrintStream print = new PrintStream(file);// 建立打印流:此方法输出的信息是追加的PrintStream print = new PrintStream(out);try{int i = 1/0;System.out.println(i);}catch(Exception e){//e.printStackTrace(); // 该方法是将异常信息输出到控制台上e.printStackTrace(print);// 通过打印流将异常信息输出到文件上print.println();}try{int[] arr = null;System.out.println(arr.length);}catch(Exception e){//e.printStackTrace(); // 该方法是将异常信息输出到控制台上e.printStackTrace(print);// 通过打印流将异常信息输出到文件上}}}

原创粉丝点击