Java拾贝第十二天——IO流之打印流

Java拾贝不建议作为0基础学习,都是本人想到什么写什么

在整个IO包中,打印流是输出信息最方便的类。

主要包括字节打印流(PrintStream)字符打印流(PrintWriter)

打印流没有输入流,所以没有输入输出这个说法,都是输出

PrintStream

字节打印流属于OutputStream的子类,PrintStream的构造方法:

public PrintStream(OutputStream out)//根据多态性 可以传入OutputStream的子类
public PrintStream(OutputStream out, boolean autoFlush) //这个布尔值是自动刷新缓冲区
public PrintStream(File file) throws FileNotFoundException//直接传入File对象

想要追加内容须使用public FileOutputStream(String name, boolean append)有参构造

PrintStream常用方法如下:

方法 类型 描述
public void print(Object obj) 普通方法 该方法被重载多次,输出任意数据
public void println(Object x) 普通方法 该方法被重载多次,输出任意数据后换行
public PrintStream printf(Locale l, String format, Object ... args) 普通方法 根据传入的格式,进行格式化输出

print(Object obj)

输出任意数据。该方法被重载了很多次,如下图:
image

D:\IOtest\text.txt内:

//空

栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        try {
            PrintStream stream = new PrintStream(file);
            stream.print("hello\r\nworld!");//要手动换行
            stream.print(12.3);
            stream.print(true);

            stream.flush();
            stream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

程序运行后,D:\IOtest\text.txt内:

hello
world!12.3true

println(Object x)

输出任意数据后换行。该方法被重载了很多次,如下图:
image
D:\IOtest\text.txt内:

hello
world!12.3true

栗子:

    public static void main(String[] args) {
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        try {
            PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
//想要追加内容须使用public FileOutputStream(String name, boolean append)有参构造
//这里第二个布尔值是自动刷新缓冲区
            stream.println();//只输出换行符
            stream.println("撒旦静安寺点击");
            stream.println("1111111111.99");
            stream.println(false);

            stream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

程序运行后,D:\IOtest\text.txt内:

hello
world!12.3true
撒旦静安寺点击
1111111111.99
false

printf(Locale l, String format, Object ... args)

根据传入的格式进行格式化输出。

格式化表如下:

字符 描述
%s 字符串
%d 整数
%f 小数
%c 单字符

D:\IOtest\text.txt内:

hello
world!12.3true
撒旦静安寺点击
1111111111.99
false

栗子:

    public static void main(String[] args) {
        String name="法外狂徒-张三";
        int age=26;
        double money=999.99;
        char sex='M';
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        try {
            PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
            stream.println();//只输出换行符

            stream.printf("外号:%s +年龄:%d +财产:%f +性别:%c",name,age,money,sex);

            stream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

程序运行后,D:\IOtest\text.txt内:

hello
world!12.3true
撒旦静安寺点击
1111111111.99
false

外号:法外狂徒-张三 +年龄:26 +财产:999.990000 +性别:M
//很多0是浮点数精确度问题。

也可以全部用字符串接收
栗子:

    public static void main(String[] args) {
        String name="法外狂徒-张三";
        int age=26;
        double money=999.99;
        char sex='M';
        File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
        try {
            PrintStream stream = new PrintStream(new FileOutputStream(file, true), true);
            stream.println();//只输出换行符

            stream.printf("外号:%s +年龄:%s +财产:%s +性别:%s",name,age,money,sex);

            stream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

程序运行后,D:\IOtest\text.txt内:

hello
world!12.3true
撒旦静安寺点击
1111111111.99
false

外号:法外狂徒-张三 +年龄:26 +财产:999.990000 +性别:M
外号:法外狂徒-张三 +年龄:26 +财产:999.99 +性别:M

字符打印流

字符打印流属于Writer的子类,PrintWriter的构造方法:

public PrintWriter (Writer out)//想要追加内容须调用FileWriter的有参构造
public PrintWriter(Writer out,boolean autoFlush)//一样的 还是自动刷新缓冲区
public PrintWriter(OutputStream out)//还可以接收字节流

想要追加内容须使用可以使用FileOutputStream或FileWriter的有参构造,根据构造方法这两种类型都能接收

PrintWriter常用方法如下:

方法 类型 描述
public void write(int c) 普通方法 该方法被重载多次,输出任意字符
public void print(Object obj) 普通方法 该方法被重载多次,输出任意数据
public void println(Object x) 普通方法 该方法被重载多次,输出任意数据后换行
public PrintWriter printf(String format, Object ... args) 普通方法 根据传入的格式,进行格式化输出

栗子就不举了和字节打印流大差不差的。

posted @ 2023-10-27 12:46  rowbed  阅读(7)  评论(0编辑  收藏  举报