Java IO流操作

java IO流按种类分:有字节流和字符流,字节流可以操作任何数据,但字符流只能操作文本数据

下面是9中方式操作IO流

/*
	请用9种方法复制文本文件

*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;



class Demo{
	public static void main(String[] args) throws IOException{
		File src1 = new File ("F:\\test\\music1.mp3");
		File src2 = new File ("F:\\test\\music2.mp3");
		File dst = new File ("F:\\test\\music3.mp3");
		//method1(src,dst);
		//method2(src,dst);
		//method3(src,dst);
		method4(src1,dst);
		method4(src2,dst);
		//method5(src,dst);
		//method6(src,dst);
		//method7(src,dst);
		//method8(src,dst);
		//method9(src,dst);
	}
	
	//方式1:利用普通字节流,一次读取一个字节
	public static void method1(File src ,File dst) throws IOException{
	
		FileInputStream fis = new FileInputStream(src);
		FileOutputStream fos = new FileOutputStream(dst);

		int b = 0;
		while((b = fis.read()) != -1){
			fos.write(b);
		}
		fis.close();
		fos.close();
	}
	
	//方式2:利用普通字节流,一次读取一个字节数组
	public static void method2(File src ,File dst) throws IOException{
	
		FileInputStream fis = new FileInputStream(src);
		FileOutputStream fos = new FileOutputStream(dst);
		
		byte[] bys = new byte[1024];
		int b = 0;
		while((b = fis.read(bys)) != -1){
			fos.write(bys,0,b);
		}
		fis.close();
		fos.close();
	}
	
	//方式三:利用高效字节流,一次读取一个字节
	
	public static void method3(File src ,File dst) throws IOException{
	
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dst));
		
		
		int b = 0;
		while((b = bis.read()) != -1){
			bos.write(b);
		}
		bis.close();
		bos.close();
	}
	
	//方式四:利用高效字节流,一次读取一个字节数组
	
	public static void method4(File src ,File dst) throws IOException{
	
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dst,true));
		
		byte[] bys = new byte[1024];
		int b = 0;
		while((b = bis.read(bys)) != -1){
			bos.write(bys,0,b);
		}
		bis.close();
		bos.close();
	}
	
	//方式五:利用普通字符流,一次读取一个字符
	
	public static void method5(File src ,File dst) throws IOException{
	
		FileReader fr = new FileReader(src);
		FileWriter fw = new FileWriter(dst);
		
		
		int b = 0;
		while((b = fr.read()) != -1){
			fw.write((char)b);
		}
		fr.close();
		fw.close();
	}
	
	
	//方式六:利用普通字符流,一次读取一个字符数组
	
	public static void method6(File src ,File dst) throws IOException{
	
		FileReader fr = new FileReader(src);
		FileWriter fw = new FileWriter(dst);
		
		char[] chs = new char[1024];
		int b = 0;
		while((b = fr.read(chs)) != -1){
			fw.write(chs,0,b);
		}
		fr.close();
		fw.close();
	}
	
	//方式七:利用高效字符流,一次读取一个字符
	
	public static void method7(File src ,File dst) throws IOException{
	
		BufferedReader br = new BufferedReader(new FileReader(src));
		BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
		
		
		int b = 0;
		while((b = br.read()) != -1){
			bw.write((char)b);
		}
		br.close();
		bw.close();
	}
	
	//方式八:利用高效字符流,一次读取一个字符数组
	
	public static void method8(File src ,File dst) throws IOException{
	
		BufferedReader br = new BufferedReader(new FileReader(src));
		BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
		
		char[] chs = new char[1024];
		int b = 0;
		while((b = br.read(chs)) != -1){
			bw.write(chs,0,b);
		}
		br.close();
		bw.close();
	}
	
	//方式九:利用高效字符流,一次读取一个字符串
	
	public static void method9(File src ,File dst) throws IOException{
	
		BufferedReader br = new BufferedReader(new FileReader(src));
		BufferedWriter bw = new BufferedWriter(new FileWriter(dst));
		
		String line = null;
		while((line = br.readLine()) != null){
			bw.write(line);
			bw.newLine();
			bw.flush();
		}
		br.close();
		bw.close();
	}
}

  

  

posted @ 2017-08-11 17:12  meal  阅读(144)  评论(0编辑  收藏  举报