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自动换行