PrintStream和PrintWriter 2020-8-23

一、PrintStream

构造方法:

① PrintStream(String fileName)

② PrintStream(OutputStream out)

③ PrintStream(OutputStream out, boolean autoFlush)

public class PrintStreamTest02 {
    public static void main(String[] args) {
        PrintStream ps = null;
        try {
            //写到控制台
            ps = System.out;
            ps.println("打印到控制台");
            System.out.println("标准输出流");

            //写到指定文件,手动刷新
            ps = new PrintStream("..\\..\\java\\PrintStream01.txt");
            /*
            ps = new PrintStream(new FileOutputStream("..\\..\\java\\PrintStream01.txt"));
            //自动刷新
            ps = new PrintStream(new FileOutputStream("..\\..\\java\\PrintStream01.txt"),true);
 
            
*/
            //println方法是将指定类型的数据写到文件中
            ps.println(1);
            ps.println("哈哈哈");
            //write()是以字节的形式写到文件中
            ps.write(97);//a
            byte[] bytes = {10,98};//换行 b
            ps.write(bytes);
            ps.write(bytes,0,1);//换行
            ps.write(99);//c
            //刷新
            ps.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (ps != null){
                ps.close();
            }
        }
    }
}

System.setOut(PrintStream out):

public class PrintStreamTest01 {
    public static void main(String[] args) {
        System.out.println("Hello World");

        PrintStream ps = System.out;

        ps.println("hello zhangsan");
        ps.println("hello lisi");
        ps.println("hello wangwu");

        //可以改变标准输出流的输出方向
        /*旧知识回顾
        System.gc();                    运行垃圾回收器
        System.currentTimeMillis();     返回当前时间(以毫秒为单位)。
        PrintStream ps = System.out;    返回标准输出流对象
        System.exit(0);                 终止当前运行的Java虚拟机。
        System.arraycopy(Object src,
                        int srcPos,
                        Object dest,
                        int destPos,
                        int length);    数组扩容
        System.setOut(PrintStream out)  重新分配“标准”输出流。
        System.setIn(InputStream in)    重新分配“标准”输入流。

        */

        try {
            //标准输出流不再指向控制台,指向 "log" 文件
            PrintStream printStream = new PrintStream(new FileOutputStream("..\\..\\java\\log.txt"));
            //修改输出方向到 "log" 文件
            System.setOut(printStream);
            System.out.println("hello zhangsan");
            System.out.println("hello lisi");
            System.out.println("hello wangwu");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (ps != null){
                ps.close();
            }
        }
    }
}

二、PrintWriter

构造方法:

① PrintWriter(OutputStream out)

② PrintWriter(OutputStream out, boolean autoFlush)

③ PrintWriter(String fileName) throws FileNotFoundException

④ PrintWriter(Writer out)

⑤ public PrintWriter(Writer out, boolean autoFlush)

public class PrintWriterTest01 {
    public static void main(String[] args) throws IOException {
        PrintWriter pw  = new PrintWriter("../../java/PrintWriter01.txt");
        pw.println(1);
        pw.write(10);
        pw.write("一");//写字符
        pw.append('1');//追加
        pw.flush();

        pw = new PrintWriter(new FileOutputStream("../../java/PrintWriter02.txt"));
        pw.println(2);
        pw.flush();

        pw = new PrintWriter(new FileOutputStream("../../java/PrintWriter03.txt"),true);
        pw.println(3);

        pw = new PrintWriter(new FileWriter("../../java/PrintWriter04.txt"),true);
        pw.println(4);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PrintStreamPrintWriter都是Java中的输出流类,用于将数据输出到文件或控制台等输出设备。 PrintStream是字节流,可以输出字节、字节数组、字符串等数据类型。它的输出目标可以是文件、控制台等。 PrintWriter是字符流,可以输出字符、字符串等数据类型。它的输出目标可以是文件、控制台等。 两者的使用方式类似,都可以使用printprintln等方法输出数据。但是,PrintWriterPrintStream更加灵活,可以设置输出编码、自动刷新等属性。因此,在处理文本数据时,建议使用PrintWriter。 ### 回答2: PrintStreamPrintWriter都是Java IO库中的输出流类,它们主要用于向外部设备、文件或控制台输出数据。虽然它们的用途类似,但是它们之间也有许多区别。 首先,PrintStreamJava IO流中的一个字节流(byte stream),而PrintWriterJava IO流中的一个字符流(character stream)。也就是说,PrintStream是用来处理字节数据,而PrintWriter是用来处理字符数据。因此,在处理文本输出时,例如输出字符串时,PrintWriterPrintStream更方便一些。 其次,PrintStream是线程安全的,而PrintWriter则不是。因此,在多线程环境下,PrintStreamPrintWriter更适合使用。 此外,从性能方面来说,PrintStreamPrintWriter更快,因为PrintWriter需要将字符转换为字节再输出,而PrintStream直接输出字节。因此,如果需要处理大量的二进制数据,则使用PrintStream较为合适。 最后需要注意的是,在Java 5之前,PrintStream是用来输出异常信息的首选,因为它可以自动刷新缓冲区。但是,从Java 5开始,PrintWriter也可以自动刷新缓冲区,因此,现在使用PrintWriter来输出异常信息也很常见。 总之,PrintStreamPrintWriter都是用于输出数据的Java IO流类。当需要输出字符数据时,使用PrintWriter更为便捷;当需要输出二进制数据时,使用PrintStream更为高效。在多线程环境下,PrintStreamPrintWriter更加适合使用。 ### 回答3: printstreamprintwriter都是Java IO库中的输出流类,用于将数据写入文件或控制台输出。 printstream主要用于输出二进制数据,比如字节数据或者字节流,它是OutputStream类的子类,可以将数据输出到文件或者控制台,printstream的最大特点是可以使用print()和println()方法来输出数据,这两个方法默认使用平台的默认字符编码将数据转换为字符流输出。printstream还支持设置分隔符,对于数据的分割和处理比较方便,但是不支持Unicode编码。 printwriter主要用于输出文本数据,比如字符数据或者字符流,它是Writer类的子类,可以将文本数据输出到文件或者控制台,printwriter也支持使用print()和println()方法来输出数据,但是不同于printstreamprintwriter默认使用Unicode编码输出数据。printwriter还支持自动刷新输出缓冲区,可以保证输出的数据及时更新到目标设备,比如文件或者屏幕。 总体来说,printstreamprintwriter都是很实用的输出流类,但是需要根据不同的需求选择合适的类,如果需要处理二进制数据,就使用printstream类,如果需要输出文本数据,就使用printwriter类。另外需要特别注意的是,这两个流都是高级流,必须在底层流的基础上使用,否则无法输出数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值