Java基础之IO打印流学习
简要概述
-
概念
之前打印信息需要使用OutputStream但是这样,所有数据输出会非常麻烦,String–>byte[],打印流中可以方便进行输出。平常在控制台打印输出,是调用print方法和println方法完成的,而这两个方法都来自于java.io.PrintStream类。
-
分类
字节打印流:PrintStream(是OutputStream的子类)
字符打印流:PrintWriter(是Writer的子类)
-
特点
-
只操作目的地,不操作数据源
-
可以操作任意类型的数据
-
如果启用了自动刷新,在调用println()方法的时候,能够换行并刷新
-
可以直接操作文件
-
-
其他
哪些流可以直接操作文件呢?答案很简单,如果该流的构造方法能够同时接收File和String类型的参数,一般都是可以直接操作文件的!
打印流
字节打印流PrintStream
-
字节打印流复制文本文件
/** * @Author charlesYan * @Description //字节输出打印流复制文本文件 * @Date 10:16 2020/11/18 * @Param [] * @return void **/ @Test public void testPrintStream(){ try (BufferedReader br = new BufferedReader(new FileReader("E:\\Blog\\202011181025.txt")); PrintStream ps = new PrintStream("E:\\Blog\\202011181030.txt");) { // 读取内容 String read = null; while ((read = br.readLine()) != null) { ps.println(read); } } catch (Exception e) { e.printStackTrace(); } System.out.println("打印流复制完成!"); }
-
格式化输出功能
JAVA对PrintStream功能进行了扩充,增加了格式化输出功能。直接使用Print即可。但是输出的时候需要指定输出的数据类型。
/** * @Author charlesYan * @Description //字节打印流格式化输出 * @Date 11:13 2020/11/18 * @Param [] * @return void **/ @Test public void testPrintStreamFormatPrint() throws Exception{ PrintStream ps = null ; // 声明打印流对象 // 如果现在是使用FileOuputStream实例化,意味着所有的输出是向文件之中 ps = new PrintStream(new FileOutputStream(new File("E:\\Blog\\202011181030.txt"))) ; String name = "李兴华" ; // 定义字符串 int age = 30 ; // 定义整数 float score = 990.356f ; // 定义小数 char sex = 'M' ; // 定义字符 // 可以使用 %s 代替 ps.printf("姓名:%s;年龄:%d;成绩:%f;性别:%c",name,age,score,sex) ; ps.close() ; }
字符打印流PrintWriter
-
字符打印流复制文本文件
/** * @Author charlesYan * @Description //字符输出打印流复制文本 * @Date 10:47 2020/11/18 * @Param [] * @return void **/ @Test public void testPrintWriter() throws Exception{ BufferedReader br = new BufferedReader(new FileReader("E:\\Blog\\202011181025.txt")); PrintWriter pw = new PrintWriter("E:\\Blog\\202011181030.txt"); String read; while ((read = br.readLine()) != null) { pw.println(read); } br.close(); pw.close(); }
参考链接
-
JAVA的IO流:打印流
https://www.cnblogs.com/alsf/p/6852852.html
-
史上最骚最全最详细的IO流教程,没有之一!
https://www.cnblogs.com/yichunguo/p/11775270.html