Java学习-IO流-打印流

Java学习-IO流-打印流

                   IO流
                 ↙       ↘
           字节流              字符流
         ↙      ↘            ↙  ↘
InputStream  OutputStream  Reader  Writer
                  ↓                  ↓
              PrintStream        PrintWriter
              字节打印流          字符打印流

注意:
1.打印流只操作文件目的地,不操作数据源
2.打印流拥有特有的方法,实现数据原样写出、自动刷新、自动换行

字节打印流

构造方法:
public PrintStream(OutputStream/File/String):关联字节输出流/文件/文件路径
public PrintStream(String fileName,Charset charset):指定字符编码
public PrintStream(OutputStream out,boolean autoFlush):自动刷新
public PrintStream(OutputStream out,boolean autoFlush,String encoding):指定字符编码且自动刷新

成员方法:
public void write(int b):常规方法:将指定的字节写出
public void println(Xxx xx):特有方法:打印任意数据,自动刷新,自动换行
public void print(Xxx xx):打印任意数据,不换行
public void printf(String format,Object… args):带有占位符的打印语句,不换行
注意: 字节打印流底层没有缓冲区,不需要开启自动刷新

PrintStream ps = new PrintStream(new FileOutputStream("..\\xx.txt"),true,Charset.forNmae("GBK"));
ps.println(97);//写出 + 自动刷新 + 自动换行
ps.print(true);
ps.printf("%s 爱上了 %s","阿珍","阿强");
ps.close();

xx.txt:97 \n true阿珍 爱上了 阿强

字符打印流

字符打印流底层有缓冲区,需要手动开启自动刷新
构造方法:
public PrintWriter(Writer/File/String):关联字节输出流/文件/文件路径
public PrintWriter(String fileName,Charset charset):指定字符编码
public PrintWriter(Writer w,boolean autoFlush):自动刷新
public PrintWriter(Writer w,boolean autoFlush,String encoding):指定字符编码且自动刷新

成员方法:
public void write(…):常规方法:写出字节或字符串
public void println(Xxx xx):特有方法:打印任意数据,自动换行
public void print(Xxx xx):打印任意数据,不换行
public void printf(String format,Object… args):带有占位符的打印语句

PrintWriter pw = new PrintWriter(new FileWriter("..\\xx.txt"),true);
pw.println("今天你终于叫我名字了,虽然叫错了,不过没关系,我马上改");
pw.print("你好你好");
pw.printf("%s 爱上了 %s","阿珍","阿强");
pw.close();

xx.txt:今天你终于叫我名字了,虽然叫错了,不过没关系,我马上改 \n 你好你好阿珍爱上了阿强

输出语句和打印流的关系

System.out.println()
public final class System{...}
public static final PrintStream out = null;
//获取打印流的对象,此打印流在虚拟机启动的时候由虚拟机创建,默认指向控制台
//打印流:标准输出流
PrintStream ps System.out;

//调用打印流的方法println
//写出数据,自动换行,自动刷新
ps.println("123");

//打印流不能关闭,在系统中是唯一的,如果关闭需要重启虚拟机
ps.close();
ps.println("你好你好");//不输出

打印流总结

1.打印流分字节打印流和字符打印流
2.打印流不操作数据源,只能操作目的地
3.字节打印流:默认自动刷新,特有的println自动换行
4.字符打印流:需要手动开启自动刷新,特有的println自动换行

你可能感兴趣的:(java,学习,jvm)