打印流

字节打印流

  • 概述
    字节打印流:PrintStream,只输出数据,有特有的print() / println()方法

  • 构造方法

    构造方法描述
    PrintStream​(String fileName)使用指定的文件路径创建没有自动行刷新的新打印流。
    PrintStream​(OutputStream out, boolean autoFlush)创建带有刷新功能的打印流
    public class Demo {
        public static void main(String[] args) throws IOException {
    
            PrintStream ps = new PrintStream("e:\\360sd\\1.txt");
            //使用OutputStream方法写入的是字节数据
            ps.write(98);
    
            //使用打印流特有方法写入的是默认码表对应的字节数据
            ps.println('c');
        }
    }
    ---*---
    输出结果:
    打开1.txt文件显示:bc
    

    输出结果可以看出,使用PrintStream父类的write方法写入的是字节数据 98,打开1.txt查看会根据默认编码表转换字节数据为对应字符。而使用printStream特有方法print/println方法写入的是 ‘c’,字符对应默认码表的字节数据,写入的是字节数据 99。

字符打印流

  • 概述
    字符打印流:PinrtWriter,只输出数据,有特有的print() / println()方法

  • 构造方法

    构造方法描述
    PrintWriter​(String fileName)使用指定的路径文件创建一个新的PrintWriter,而且不需要执行自动刷新
    PrintWriter​(Writer out, boolean autoFlush)创建一个新的PrintWriter,当autoFlush为true,则print、println、和format方法将属性输出缓冲区
    public class Demo {
        public static void main(String[] args) throws IOException {
            PrintWriter pw = new PrintWriter("e:\\360sd\\1.txt");
            //使用字符输出流的write方法
            pw.write("你好");
            pw.write("\r\n");
            pw.write("中国");
            //使用字符打印流特有方法
            pw.println("你好");
            pw.print("中国");
            
            //字符输出流均需要刷新缓冲区
            pw.flush();
        }
    }
    ---*---
    输出结果:
    在1.txt文件中写入了:
    你好
    中国你好
    中国
    

    字符输出流需要刷新缓冲区才能将数据写入文件

    public class Demo {
        public static void main(String[] args) throws IOException {
            
            PrintWriter pw = 
                    new PrintWriter(new FileWriter("e:\\360sd\\1.txt"),true);
            //使用字符打印流特有方法
            pw.println("你好");   //自动刷新缓冲区
            pw.print("中国");     //没有自动刷新
        }
    }
    ---*---
    输出结果:
    在1.txt文件中写入了:
    你好
    

    使用该构造方法在调用println方法打印字符时会自动刷新缓冲区。

  • 复制文件对比

public class HelloWorld {
    public static void main(String[] args) throws IOException {
        //使用字符输入流 + 字符打印流
        BufferedReader br =
                new BufferedReader(new FileReader("idea_test\\src\\com\\file\\testFile.java"));
        PrintWriter pw = new PrintWriter(new FileWriter("copy.java"),true);

        String len ;
        while ((len=br.readLine())!=null){
            pw.println(len);
        }
        //关闭流
        br.close();
        pw.close();

//        //使用字符输入输出流
//        BufferedReader br =
//                new BufferedReader(new FileReader("idea_test\\src\\com\\file\\testFile.java"));
//        BufferedWriter bw = new BufferedWriter(new FileWriter("copy1.java"));
//        String len;
//        while ((len=br.readLine())!=null){
//            bw.write(len);
//            bw.newLine();
//            bw.flush();
//        }
//        //关闭流
//        br.close();
//        bw.close();
    }
}
---*---
输出结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值