1.使用字符流类BufferedReader读文本文件

BufferedReader和InputStreamReader两个类都是Reader抽象类的子类,FileReader类是InputStreamReader类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:

1)导入相关的类

import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;

2)构造一个BufferedReader对象

FileReader fr = new FileReader("mytest.txt");
BufferedReader br = new BufferedReader(fr);
或者
FileInputStream fis=new new FileInputStream("mytest.txt");
InputStreamReader isr=new InputStreamReader(fis, "UTF-8");//此构造方法可以设置指定的编码格式读取文件,防止出现乱码情况
BufferedReader br = new BufferedReader(isr);

3)利用BufferedReader类的方法读取文本文件中的数据

br.readLine();//读取一行数据,返回字符串

4)关闭相关的流对象

br.close();//后开的流先关

fr.close();//先开的流后关

代码举例说明:

//Bufferedreader类是Reader类的子类,效率比InputStreamReader类要高
	public static void main(String[] args) {
		InputStream is=null;
		Reader reader=null;
		BufferedReader br=null;
		try {
			//向上转型:InputStream类是抽象类,不能实例化,指向其子类FileInputStream类
			is = new FileInputStream("E:/b.txt");
			//向上转型:Reader类是抽象类,不能实例化,指向其子类InputStreamReader类,
			//创建InputStreamReader类对象,此构造方法传递参数是InputStream类型
			 reader=new InputStreamReader(is, "UTF-8");
			//创建BufferedReader类对象,此构造方法传递参数是Reader类型
			 br=new BufferedReader(reader);
			String str;
			while((str=br.readLine())!=null){//readLine()方法:一行一行的读取文件数据
				System.out.println(str);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(br!=null){
					br.close();
				}
				if(reader!=null){
					reader.close();
				}
				if(is!=null){
					is.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

2.使用字符流类BufferedWriter写文本文件

BufferedWriter和OutputStreamWriter两个类都是Reader抽象类的子类,FileWriter类是OutputStreamWriter类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:

1)导入相关的类

import java.io.BufferedWriter;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStreamWriter;

2)构造一个BufferedWriter对象

FileWriter fw = new FileWriter("mytest.txt");
BufferedWriter bw = new BufferedWriter(fw);
或者
FileOutputStream fos=new FileOutputStream("mytest.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");//此构造方法可以设置指定的编码格式写入文件,防止出现乱码情况
BufferedWriter bw = new BufferedWriter(osw);

3)利用BufferedWriter类的方法读取文本文件中的数据

bw.write("hello");//写入数据hello
bw.newLine();//换行

4)关闭相关的流对象

bw.flush();//刷新缓冲区
bw.close();//后开的流先关
fw.close();//先开的流后关

代码举例说明:

//BufferedWriter类是Writer类的子类,效率比OutputStreamWriter类高
	public static void main(String[] args) throws IOException {
		OutputStream os=new FileOutputStream("E:/d.txt",true);
		Writer writer=new OutputStreamWriter(os, "UTF-8");
		//FileWriter类是OutputStreamWriter类子类,OutputStreamWriter类是Writer类子类
		//Writer writer=new FileWriter("E:/e.txt", true);
		//创建BufferedWriter类对象
		BufferedWriter bw=new BufferedWriter(writer);
		bw.write("qwertyui");
		bw.write("asdffg");
		bw.newLine();//换行
		bw.write("布欧");
		System.out.println("文件写入完毕");
		bw.close();
	}

3.读写二进制文件

当我们需要对文件的图片、音频、视频等数据进行读写操作时,可以使用DataInputStream和DataOutputStream这两个常用的类。具体步骤如下:

1)导入相关的类

import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;

2)构造一个数据输入流对象和输出流对象

FileInputStream fis = new FileInputStream("HelloWorld.class");
DataInputStream dis = new DataInputStream(fis);
FileOutputStream fos = new FileOutputStream("AnHelloWorld.class");
DataOutputStream dos = new DataOutputStream(fos);

3)利用数据输入流类和输出流类的方法读写二进制文件中的数据

dis.read();//读取下一个数据
dis.readInt();//读取出来的是整数
dis.readByte();//读取出来的数据是Byte
dos.write(1); //把数据写入二进制文件

4)关闭数据输出流和输入流

/

/后开的流先关,先开的流后关
dos.close();
fos.close();
dis.close();
fis.close();

代码举例说明:复制一个图片

//DataInputStream类和DataOutputStream类常用于处理图片,音频,视频等二进制文件
	public static void main(String[] args) throws IOException {
		InputStream is=new FileInputStream("E:/java.jpeg");
		DataInputStream dis=new DataInputStream(is);
		OutputStream os=new FileOutputStream("E:/copyjava.jpeg");
		DataOutputStream dos=new DataOutputStream(os);
		int num;
		while((num=dis.read())!=-1){
			dos.write(num);
		}
		System.out.println("图片复制完毕");
		dos.close();
		os.close();
		dis.close();
		is.close();
	}