day20  java 语言中的读取写入数据(一)

一、io概述

    io数据流的读写功能,在实际的生活中也很常见,比如文件的上传、下载,日志的自动更新等都与io读写密切相关。io又被分为了读取数据和写入数据两个大的功能。下面就来看看读取数据的几种类。


day20 java 语言中的读取写入数据(一)_第1张图片

二、读取数据的几种方式

        读取数据被分为了字节流读取数据,和字符流读取数据两种。

    (一):字符输入流:

          1、fileReader类。是字符流读取数据

          2、BufferedReader类。带有缓冲流读取数据

    (二):字节输入流:

          1、FileInputStream类。是字节流读取数据

          2、BufferedInputStream。是带有缓冲流读取数据


三、具体实例

    (一)字符流读数据

//io数据流输入读取【FileReader】
package www.com.c1;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Io02 {
	public static void main(String[] args) {
		try {
			//1、创建使用字符流实例
			FileReader fileReader = new FileReader("D:\\zs.txt");
			//2、定义变量接收读取到的
			int temp = 0;
			//3、定义字符来转换。
			char c;
			//4、循环打印
			while ((temp = fileReader.read())!=-1) {
				c =(char) temp;
				System.out.print(c);
			}
			//5、关闭数据流
			fileReader.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
//io数据流输入读取【BufferedReader】
package www.com.c1;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Io04 {

	public static void main(String[] args) {
		try {
			//1、创建实例,
			BufferedReader buf = 
			    new BufferedReader(new FileReader("D:\\zs.txt"));
			//2、定义字符串来接收
			String temp;
			
			//3、使用readline来读取数据,注意他是读取的一行字符串
			while ((temp = buf.readLine())!=null) {
				System.out.println(temp);
			}			//4、关闭数据流
			buf.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

    (二)字节流读数据

package www.com.c1;

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

//io数据流输入读取【FileInputStream】

//1、FileInputStream:字节流读取文件:一般读取一些图片、视频等等。
//					 字符流读取文件:一般都是一些文字。

public class Io01 {
	public static void main(String[] args) {		
//使用第一种方式【字节流】读取文件。
		try {
			//1步:创建输入字节流实例,注意后面的文件存放的位置路径
			FileInputStream inputStream01 = new FileInputStream("D:\\zs.txt");
			
			//2步、定义变量来接受每一次读取到的数据
			int tmp;
			
			//4、定义变量来转换打印读到的是什么。
			char ok;
			
			//3、使用while循环来读取文件的内容:核心步骤
			while ((tmp=inputStream01.read())!=-1) {
				ok = (char) tmp;//使用强制类型转换
				System.out.print(ok);
			}
			//5、关闭数据流
			inputStream01.close();
			
		} catch (FileNotFoundException e) {
			System.out.println("文件不存在!请在改路径下建立该文件!");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
//使用第二种方式读取文件。	【使用字节流读取中文】
		
		try {
			//1、创建读取文件的实例
			FileInputStream inputStream = new FileInputStream(new File("D:\\zs.txt"));
			
			//2、定义数组来控制每次读取到的数据量【类似于缓存】
			byte[] b = new byte[1024]; 
			
			//3、定义变量来接收读取到的数据
			int a;
			//4、使用read[byte]方法读取数据
			while ((a = inputStream.read(b))!=-1) {
				
				//5、创建字符串来接收处理读取到的数据,
				String s = new String(b, 0, a);
					//注意各个参数,参数一:代表每次读取的最大数据量
							//参数二:代表读取数据的偏移量,就是从哪个字节开始读取剩下的数据
							//参数三:读取字节的数据。
				//6、输出
				System.out.println(s);
			}
			
			//7、关闭数据流
			inputStream.close();
			
		} catch (FileNotFoundException e) {
			System.out.println("文件不存在");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
//io数据流输入读取【BufferedInputStream】
package www.com.c1;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Io03 {
	public static void main(String[] args) {	
		try {
			//1、创建BufferedInputStream实例,只能传一个输入流,所以在创建的时候都会创建输入流的父类或者子类。
			BufferedInputStream bis = 
					new BufferedInputStream(new FileInputStream("D:\\zs.txt"));
			
			//2、定义变量接收读取到的
			int temp = 0;
			//3、定义字符来转换。
			char c;
			//4、循环打印
			while ((temp = bis.read())!=-1) {
				c =(char) temp;
				System.out.print(c);
			}
			
			//5、关闭数据流
			bis.close();
		
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


四、结束语

    都这儿关于使用IO流读取文件的常用4个方法就说完了。注意一下在这4个实例中的应用。