在API文档中对PrintStream的解释:PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;
在其方法摘要中总结起来就是三种:
- PrintStream(File file) 接收一个File对象,
- PrintStream(String fileName)可以直接将数据打印到文件当中,意味着在输出流中有直接操作文件的对象。以前直接操作文件的对象都是File打头的FileWriter,FileOutputStream。
- PrintStream(OutputStream out) 就是将数据打印到流中
PrintStream功能的强大之处在于提供了很多的打印方法(具体可以查看API文档)
public class PrintStreamDemo {
public static void main(String[] args) throws IOException {
/*
* PrintStream:
* 1,提供了打印方法可以对多种数据类型值进行打印。并保持数据的表示形式。
* 2,它不抛IOException.
*
* 构造函数,接收三种类型的值:
* 1,字符串路径。
* 2,File对象。
* 3,字节输出流。
*/
PrintStream out = new PrintStream("print.txt");
out.write(97);//将97按照编码表变为a再写入。
// out.write(610);// 只写最低8位
// out.print(97);// 打印97并保留数据格式
out.close();
}
}
输出结果:
打开OutputStream的write(int b)方法解释:将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。 b 的 24 个高位将被忽略。
比如:97的用4个字节表示为0000-0000 0000-0000 0000-0000 0110-0001,只有最后8位被写入
当使用out.write(610);时,其0000-0000 0000-0000 000-0010 0110-0010取最低8位输出结果为98,对应的字母为b:
当使用out.print(97)时,新关联一个print1.txt文档,可以看到:
其打印方法可以保持数据的表示形式,这里将97先变成字符保持原样将数据打印到目的地
PrintWriter
是Writer下的一个子类,向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。PrintWriter:字符打印流。此方法在服务端经常使用,比如在浏览器中输出了网址,然后五彩斑斓的网页被打印出来,其服务器端就使用这个类在将数据打印出来
构造函数参数:
- 字符串路径。
- File对象。
- 字节输出流。
- 字符输出流。
public class PrintWriterDemo {
public static void main(String[] args) throws IOException {
//使用BufferedReader的readLine()方法
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//结果打印到控制台上
PrintWriter out = new PrintWriter(System.out,true);
String line = null;
while((line=bufr.readLine())!=null){
//判断结束标记,否则一直等待输入
if("over".equals(line))
break;
//转换成大写输出
out.println(line.toUpperCase());
//out..flush();
}
//关闭资源
out.close();
bufr.close();
}
}
输出结果:
向指定的文档中写入
public class PrintWriterDemo2 {
public static void main(String[] args) throws IOException {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//PrintWriter out = new PrintWriter("out.txt",true);这样写是不可以的
//因为没有这样的构造器,如果想带自动刷新功能,那就要讲out.txt封装
//成一个输出流对象PrintWriter(Writer out, boolean autoFlush)
PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line.toUpperCase());
// out.flush();
}
out.close();
bufr.close();
}
}
输出结果:
打开out.txt可以看到被转换的大写输出
本人是菜鸟一枚,当做学习笔记写博客。谢谢各路大咖驻足审阅