高效缓冲区输入输出流

1、BufferedWriter

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。


package com.rl.io.buffer;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 使用高效缓冲区流来向文件中写入一句话
 */
public class BufferWriterDemo {
	public static void main(String[] args) {
		 writer();
		
		
	}
	/**
	 * 使用高效缓冲区流向d.txt的文件中写入,java太好学了
	 */
	public static void writer(){
		
		//创建文件输出流
		FileWriter fw = null;
		BufferedWriter bw = null;
		try {
			fw = new FileWriter("d.txt");
			//创建高效缓冲区流的对象
			bw = new BufferedWriter(fw);
			//输出数据
			bw.write("java太好学了,真简单");
			//清空缓冲区
			bw.flush();
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				//关闭缓冲区的流就会自动关闭filewriter
				bw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	
	
}

2、BufferedWriter的扩展方法

newline()可以换行

package com.rl.io.buffer;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 使用高效缓冲区流来向文件中写入一句话
 */
public class BufferWriterDemo1 {
	public static void main(String[] args) {
		 writer();
		
		
	}
	/**
	 * 使用高效缓冲区流向d.txt的文件中写入,java太好学了
	 */
	public static void writer(){
		
		//创建文件输出流
		FileWriter fw = null;
		BufferedWriter bw = null;
		try {
			fw = new FileWriter("d.txt");
			//创建高效缓冲区流的对象
			bw = new BufferedWriter(fw);
			for(int i = 0;i<10;i++){
				//输出数据
				bw.write("java太好学了,真简单");
				//换行,相当于\r\n
				bw.newLine();
			}
			
			//清空缓冲区
			bw.flush();
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				//关闭缓冲区的流就会自动关闭filewriter
				bw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	
	
}

3、BufferedReader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。


package com.rl.io.buffer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 使用高效缓冲区流来读取文件中的内容
 */
public class BufferReaderDemo {
	public static void main(String[] args) {
		 read();
		read1();
		
	}
	/**
	 * 使用高效缓冲区来读取文件
	 */
	public static void read(){
		
		//创建文件输出流
		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader("d.txt");
			//创建高效缓冲区流的对象
			br = new BufferedReader(fr);
			//读取数据
			int num = -1;
			while((num=br.read()) !=-1){
				System.out.print((char)num);
			} 
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(br != null){
			try {
				//关闭缓冲区的流就会自动关闭filewriter
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			}
		}
	}
	
	/**
	 * 使用高效缓冲区来读取文件(建议使用)
	 */
	public static void read1(){
		
		//创建文件输出流
		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader("d.txt");
			//创建高效缓冲区流的对象
			br = new BufferedReader(fr);
			//读取数据
			char[] chs = new char[1024];
			int len = -1;
			while((len=br.read(chs)) !=-1){
				System.out.print(new String(chs,0,len));
			} 
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(br != null){
			try {
				//关闭缓冲区的流就会自动关闭filewriter
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			}
		}
	}
	
}

4、BufferedReader的扩展方法

扩展方法readLine读取一行数据

package com.rl.io.buffer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
 * 使用高效缓冲区流来读取文件中的内容
 */
public class BufferReaderDemo1 {
	public static void main(String[] args) {
		read1();
		
	}
	
	/**
	 * 使用高效缓冲区来读取文件(建议使用)
	 */
	public static void read1(){
		
		//创建文件输出流
		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader("d.txt");
			//创建高效缓冲区流的对象
			br = new BufferedReader(fr);
			String line = null;
			//高效输入流可以读取一行数据
			while((line = br.readLine()) !=null){
				System.out.println(line);
			}
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(br != null){
			try {
				//关闭缓冲区的流就会自动关闭filewriter
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			}
		}
	}
	
}

5、使用高效缓冲流来复制文本文件

package com.rl.io.copyfile;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * 使用高效缓冲流来复制文本文件
 */
public class CopyFileDemo1 {
	public static void main(String[] args) {
		copy();
		System.out.println("done");
	}
	/**
	 * 拷贝文件方式1
	 */
	public static void copy(){
		Reader reader = null;
		BufferedReader br = null;
		Writer writer = null;
		BufferedWriter bw= null;
		try {
			//创建文件读取对象
			reader = new FileReader("E:/eclipse/eclipse/workspace/io_demo/src/com/rl/io/output/IOReaderDemo.java");
			//创建高效缓冲区的输入流
			br = new BufferedReader(reader);
			//创建写文件的对象
			writer = new FileWriter("IOReaderDemo.java");
			//创建高效缓冲区的输出流
			bw = new BufferedWriter(writer);
			
			String line = null;
			//读取数据并且写入另一个文件中
			while((line = br.readLine()) !=null){
				
				bw.write(line);
				//进行换行
				bw.newLine();
			}
			bw.flush();	
			
			
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		
	   }finally{
		   
		   try {
			   //先开谁就后关闭谁
			   if(writer != null)
			writer.close();
			   if(reader != null)
			   reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}		  
	   }
	
	}
	
	
}

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