zoukankan      html  css  js  c++  java
  • PrintWriter的使用

    java.io.PrintWriter

    具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新。

    java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进行块写操作提供效率,

    而PrintWriter就是通过连接它实现的缓冲功能(PW的很多构造方法内部自动连接它)。

    PW支持两个直接对文件写操作的构造方法:
    * PrintWriter(File f)传文件名
    * PrintWriter(String s)传路径

    以上两种方法都支持一个重载,就是再传入一个参数
    * 允许我们制定写出字符时的字符集。

    * PrintWriter给人一种可以直接对文件进行操作的假象
    * PW是一个高级流
    * 实际上PW包装了字节流、字符流和字符缓冲流。
    * PW负责自动行刷新
    * bw负责提高效率
    * osw负责读字符
    * fos负责写字节
    * 最后PW能够按行很快地把一个字符串变成字节写在文件中

    代码展示如下所示:

    import java.io.IOException;
    import java.io.PrintWriter;
    
    /**
    * java.io.PrintWriter
    * 具有自动行
    * @author 小明
    *
    */
    public class PWDemo {
    
    public static void main(String[] args) throws IOException {
    /**
    * PW支持两个直接对文件写操作的构造方法:
    * PrintWriter(File f)传文件名
    * PrintWriter(String s)传路径
    * PrintWriter给人一种可以直接对文件进行操作的假象
    * PW是一个高级流
    * 实际上PW包装了字节流、字符流和字符缓冲流。
    * PW负责自动行刷新
    * bw负责提高效率
    * osw负责读字符
    * fos负责写字节
    * 最后PW能够按行很快地把一个字符串变成字节写在文件中
    */
    
    PrintWriter pw = new PrintWriter("pw.txt");
    
    pw.println("飞雪连天射白鹿");
    pw.println("金庸小说我都爱看");
    System.out.println("写出完毕!");
    pw.close();
    }
    }
    import java.io.BufferedWriter;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    
    public class PWDemo2 {
    
    public static void main(String[] args) throws IOException {
    /**
    * 使用流连接形式向文件中写出字符串
    */
    //    FileOutputStream fos = new FileOutputStream("pw2.txt");
    //    
    //    OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
    //    
    //    BufferedWriter bw = new BufferedWriter(osw);
    //    
    //    PrintWriter pw = new PrintWriter(bw);
    
    PrintWriter pw = new PrintWriter(
    new BufferedWriter(
    new OutputStreamWriter(
    new FileOutputStream("pw2.txt")
    , "UTF-8")
    )
    );
    
    pw.println("你好");
    pw.println("我不好");
    pw.close();
    
    }
    
    }
    缓冲字符流中所有构造方法中第一个参数都是Reader或Writer对象。
    
    代码展示如下所示:

    PrintWriter创建时如果有参数true时,会有行刷新。PrintWriter调用println()方法有行刷新。

    当创建PW时第一个参数为一个流时,
    * 那么久可以再传入一个boolean值类型的参数,
    * 若该值为true,那么当前PW久具有自动行刷新的功能,
    * 即:每当使用println方法写出一行字符串后就会自动调用flush
    * 注:使用自动行刷新可以提高写出数据的即时性,
    * 但是由于会提高写出次数,必然会导致写效率降低。

    package io;
    
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.util.Scanner;
    
    /**
    * 完成简易记事本功能
    * 程序启动后要求输入文件名,然后对该文件写操作。
    * 之后输入的每一行字符串都按行写入到该文件中。
    * 当输入“exit"是程序退出。
    * 
    * 使用PW完成该功能,并且自行使用流连接完成。
    * 
    * @author 小明
    *
    */
    public class Note {
    public static void main(String[] args) throws IOException, FileNotFoundException{
    Scanner reader = new Scanner(System.in);
    System.out.println("请输入文件名:");
    String filename = reader.nextLine();
    
    PrintWriter pw = new PrintWriter(
    new BufferedWriter(
    new OutputStreamWriter(
    new FileOutputStream(filename),"UTF-8"
    )
    ),true
    );
    System.out.println("请开始输入内容");
    while(true)
    {
    String line = reader.nextLine();
    /**
    * 当创建PW时第一个参数为一个流时,
    * 那么久可以再传入一个boolean值类型的参数,
    * 若该值为true,那么当前PW久具有自动行刷新的功能,
    * 即:每当使用println方法写出一行字符串后就会自动调用flush
    * 注:使用自动行刷新可以提高写出数据的即时性,
    * 但是由于会提高写出次数,必然会导致写效率降低。
    */
    if("exit".equals(line))
    {
    break;
    }
    //pw.write(line);
    pw.println(line);
    //pw.flush();
    }
    pw.close();
    System.out.println("谢谢输入");
    }
    
    }
  • 相关阅读:
    XTU 1250 Super Fast Fourier Transform
    XTU 1249 Rolling Variance
    XTU 1243 2016
    CodeForces 710A King Moves
    CodeForces 710B Optimal Point on a Line
    HDU 4472 Count
    并查集
    高精度四件套
    Kruskal最小生成树
    [蓝桥杯]翻硬币(贪心的详解附带题目测试链接)
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9583632.html
Copyright © 2011-2022 走看看