Java--字符流和字节流

IO流分类:

  • 流向:
    输入流:读数据 FileReader
    输出流:写数据 FileWriter

  • 数据类型

     字节流:
     		字节输入流     读取数据     FileInputStream
     		字节输出流     写出数据     FileOutputStream
     
     字符流
     		字符输入流     读取数据     Reader
     		字符输出流     写出数据    Writer
    

复制图片

package com.it03;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 	使用字符流和字节流复制图片
 * 	
 * 	二进制文件只能使用字节流进行复制
 * 	文本文件的复制既能使用字符流也能使用字节流
 * 		
 */
public class IOClassDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//无法进行图片的复制
		//function();
		
		//创建字节输入流对象
		FileInputStream fis = new FileInputStream("a.jpg");
		//创建字节输出流对象
		FileOutputStream fos = new FileOutputStream("b\\a.jpg");
		
		//进行数据的读取和复制,一次读取一个字节数组的方式
		int len;
		byte[] bys = new byte[1024];
		while((len=fis.read(bys))!=-1) {
			fos.write(bys,0,len);
			
		}
		
		//释放资源
		fis.close();
		fos.close();
		

	}

	private static void function() throws FileNotFoundException, IOException {
		//创建字符输入流对象
		FileReader fr = new FileReader("a.jpg");
		//创建字符输出流对象
		FileWriter fw = new FileWriter("b\\a.jpg");
		
		//一次读写一个字符数组
		int len;//用于存储读到的字符个数
		char[] chs = new char[1024];
		while((len=fr.read(chs))!=-1) {
			fw.write(chs,0,len);
			fw.flush();
			
		}
		//释放资源
		fw.close();
		fr.close();
	}

}

使用字节流复制文本文件

package com.it03;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 	使用字节流复制文本文件
 * 	
 */
public class IOClassDemo2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//创建字节输入流对象
		//File f = new File("src\\com\\it03\\IOClass.java");
		FileInputStream fis = new FileInputStream("src\\com\\it03\\IOClass.java");
		//创建字节输出流对象
		FileOutputStream fos = new FileOutputStream("b\\IOC.java");
		
		
		//文本的复制
		//一次读写一个字节
		int by;
		while((by=fis.read())!=-1) {
			fos.write(by);
		}
		
		//一次读写一个字节数组
		int len;
		byte[] bys = new byte[1024];
		while((len=fis.read(bys))!=-1) {
			fos.write(bys,0,len);
			
		}
		
		
		
		//释放资源
		fis.close();
		fos.close();
				
	}

}

你可能感兴趣的:(java,笔记)