IO流----文件字节流、文件字符流

流的分类

按流向分:
输入流:程序从数据源读取数据的流
输出流:程序向数据源写入数据的流
按数据传输单位分:
字节流:以字节为单位传输数据的流
字符流:以字符为单位传输数据的流
IO流----文件字节流、文件字符流_第1张图片

按功能分:
节点流:用于直接操作目标设备的流
处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更为强大、灵活的读写功能。

FileInputStream字节输入流

package com.qf.day18_1;
/**
 * 字节输入流
 */
import java.io.FileInputStream;
public class Demo1 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		FileInputStream fil = new FileInputStream("d:\\info.txt");
		//单个字节的输入流
//		int date=0;
//		while((date=fil.read())!=-1){
//			System.out.println(date);
//		}
		//多个字节的输入流
		byte[] b = new byte[1024*4];
		int len = 0;
		while((len=fil.read(b))!=-1){
			for (int i = 0; i < len; i++) {
				System.out.println(b[i]);
			}
		}
		fil.close();
	}

}

FileOutputStream字节输出流

package com.qf.day18_1;

import java.io.FileOutputStream;

public class Demo2 {
	public static void main(String[] args) throws Exception {
		//创建文件字节输出流(如果文件不存在,则创建,如果文件存在,则默认覆盖,可以使用参数设置)
		FileOutputStream fos = new FileOutputStream("d:\\file.txt",true);
		fos.write('a');
		fos.write('b');
		fos.write(99);
		fos.close();
		
	}
}

使用字节流复制文件

package com.qf.day18_1;
/**
 * 使用字节流复制文件
 */
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Demo3 {
	public static void main(String[] args) throws Exception{
		FileInputStream fin = new FileInputStream("d:\\info.txt");
		FileOutputStream fout = new FileOutputStream("e:\\info.txt");
		
		byte[] buff = new byte[1024*4];
		int len=0;
		while((len=fin.read(buff))!=-1){
			fout.write(buff, 0, len);
			
		}
		fin.close();
		fout.close();
		System.out.println("复制完成");
	}
}


FileReader使用字符流读文件

package com.qf.day18_2;
/**
 * 使用字符流读取文件
 */
import java.io.FileReader;

public class Demo1 {
	public static void main(String[] args) throws Exception{
		FileReader fileReader = new FileReader("d:\\info.txt");
		
		int data = 0;
		while((data=fileReader.read())!=-1){
			System.out.println((char)data);
		}
		fileReader.close();
		
	}
}

FileWrite使用字符流写文件

package com.qf.day18_2;

import java.io.FileWriter;

/**
 * 使用字符流写文件
 * @author Administrator
 *
 */
public class Demo2 {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		FileWriter fileWriter =new FileWriter("D:\\info.txt");
		for (int i = 0; i < 10; i++) {
			fileWriter.write("我爱北京天安门\r\n");
			//fileWriter.append(null);
			fileWriter.flush();
		}
		fileWriter.close();
	}

}

使用字符流复制文本

package com.qf.day18_2;
/**
 * 使用字符流复制文件
 */
import java.io.FileReader;
import java.io.FileWriter;

public class Demo3 {
	public static void main(String[] args)throws Exception {
		FileReader fr = new FileReader("d:\\info.txt");
		FileWriter fw = new FileWriter("E:\\info.txt");
		
		char[] buff = new char[1024*4];
		int len=0;
		while((len=fr.read(buff))!=-1){
			fw.write(buff, 0, len);
			fw.flush();
			
		}
		fr.close();
		fw.close();
		
	}
	
}


注:使用字符流只能复制文本,而字节流可以复制任何格式的文件(比如jpg、rar、exe等)

你可能感兴趣的:(java)