5.PrintStream类(重点)
(1)基本概念
java.io.PrintStream类用于打印各种数据内容。
(2)常用的方法
PrintStream(OutputStream out) - 根据参数指定的引用构造对象。
- OutputStream类是个抽象类,实参需要传递子类的对象。
void print(String s) - 打印参数指定的字符串。
void println(String x) - 打印字符串并换行。
void close( ) - 关闭流。
void flush( ) - 刷新流对象。
import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.Date; public class TestBufferedReaderPrintStream { public static void main(String[] args) { try{ //1.创建BufferedReader类型的对象与键盘输入(System.in)进行关联 BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //2.创建PrintStream类型的对象与c:/a.txt文件进行关联 听不到我说话? PrintStream ps = new PrintStream(new FileOutputStream("c:/a.txt")); //3.不断地提示用户输入并读取一行本文,并且写入到c:/a.txt中 int flag = 1; while(true){ System.out.println("请输入要发送的内容:"); //读取用户输入的一行文本 String str = br.readLine(); //4.当用户输入的是"bye"时,则结束循环 if("bye".equalsIgnoreCase(str)) break; //将发送消息的时间写入到文件中 Date d1 = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //将str写入到文件中 ps.println(sdf.format(d1) + (flag%2 == 0?" 张三说:":" 李四说:") + str); flag++; } //5.关闭相关流对象 ps.flush(); ps.close(); br.close(); }catch(Exception e){ e.printStackTrace(); } } }
经验:
当需要向文件中写入多个对象时,通常的做法是先将所有被写入的对象放入一个集合中。
然后将该集合整体看做一个对象写入文件中,此时读取文件中的内容时,只需要调用一次readObject()方法就可以全部读出。