javaSE 打印流,PrintWriter,PrintStream。 打印到输出流(文件)中


Demo.java:

package cn.xxx.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/*
 *  打印流
 *    PrintStream  打印字节流
 *    PrintWriter  打印字符流(较常用)
 *  打印流的特点:
 *   1. 此流不负责数据源,只负责数据目的
 *   2. 为其他输出流,添加功能
 *   3. 永远不会抛出IOException
 *      但是,可能抛出别的异常
 *   
 *   两个打印流的方法,完全一致
 *    构造方法,就是打印流的输出目的端
 *    PrintStream
 *       构造方法,接收File类型,接收字符串文件名,接收字节输出流OutputStream
 *    PrintWriter  
 *       构造方法,接收File类型,接收字符串文件名,接收字节输出流OutputStream, 接收字符输出流Writer
 *   
 */
public class Demo {
	public static void main(String[] args) throws  IOException {
		function();

	}
	/* 
	 * 打印流,可以开启自动flush刷新功能
	 * 满足2个条件:
	 *   1. 输出的数据目的必须是流对象。 (用File文件对象和String文件名构造PrintWriter不能开启自动刷新功能,因为第二个参数表示编码表)
	 *       OutputStream(字节流)  Writer(字符流)
	 *       可以将File文件或String文件名包装成流对象,然后再构造PrintWriter来开启自动刷新功能。
	 *   2. 必须调用println,printf,format三个方法中的一个,启用自动刷新
	 */
	public static void function_1()throws  IOException{
		FileOutputStream fos = new FileOutputStream("c:\\5.txt");
		PrintWriter pw = new PrintWriter(fos,true);  // true 表示开启自动flush刷新功能
		pw.println("i");
		pw.println("love");
		pw.println("java");
		pw.close();
	}
	
	/*
	 * 打印流,写入数据
	 * 方法print println  int原样输出,不走码表。  可以打印char[]数组(String的本质就是char[]);其他类型数组,只会打印地址。
	 * write(int a)方法 写入一个字符,走码表。 还可以写String、char[]数组。
	 */
	public static void function() throws FileNotFoundException{
		PrintWriter pw = new PrintWriter("c:\\1.txt");  // 构造函数传String
		//PrintWriter pw = new PrintWriter(new File("c:\\2.txt")); // 构造函数传文件File
		//PrintWriter pw = new PrintWriter(new FileWriter("c:\\3.txt")); // 构造函数传字符流FileWriter
		//PrintWriter pw = new PrintWriter(new FileOutputStream("c:\\4.txt")); // 构造函数传字节流FileOutputStream    
		
		pw.println(100);  // println 自动加换行。  原样输出,不走码表。
		pw.write(100);  // write(int)方法写入一个字符,走码表。  还可以写String、char[]数组。
		pw.close();
	}
}



猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/80725092