Java中缓冲流

java中的缓冲流也叫高效流,是对4个基本File流的增强,所以也是四个流。
字节缓冲流:BufferInputStream,BufferOutPutStream。
字符缓冲流:BufferedReader,BufferWriter;

字节缓冲流

使用步骤:
1:创建FileOutPutStream对象,构造方法中绑定要输出的目的地。
2:创建BufferOutPutStream对象,构造方法中传递FileOutPutStream对象,提高FileOUtPutStream效率。
3:调用BufferOutPutStream对象中的write方法,把数据写到内存缓冲区
4:使用BufferOutPutStream对象中的flush方法把缓冲区数据刷新到文件中。

public class BufferO {
     
	public static void main(String[] args) throws IOException {
     
		// TODO Auto-generated method stub
		FileOutputStream fos = new FileOutputStream("E:\\图片\\a.txt");
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		bos.write("today is good day".getBytes());
		bos.flush();
		bos.close();
	}
}

字节缓冲流复制。

public class BufferI {
     
	@SuppressWarnings("resource")//去掉警告信息
	public static void main(String[] args) throws IOException {
     
		long start = System.currentTimeMillis();
		// TODO Auto-generated method stub
		FileInputStream fis = new FileInputStream("E:\\图片\\csdn截图\\01.jpg");
		BufferedInputStream bis = new BufferedInputStream(fis);
		FileOutputStream fos = new FileOutputStream("E:\\图片\\02.jpg");//可以追加写入
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		
		int len = 0;
		byte[] bytes = new byte[1024];//存储每次读取的数据
		while((len=bis.read(bytes))!=-1) {
     
			bos.write(bytes,0,len);
			//System.out.println(new String(bytes,0,len));//输出出来
		}
		bos.flush();
		System.out.println("over");
		long end = System.currentTimeMillis();
		System.out.println("总共用时"+(end-start)+"毫秒");
	}
}
over
总共用时3毫秒//好快

字符缓冲流

字符缓冲输出流使用步骤:
1:创建字符缓冲输出流BufferWriter的对象,构造方法中传递字符输出流FileWriter的对象。
2:调用字符缓冲输出流BufferWriter对象的write方法,把数据写到内存缓冲区。
3:调用flush方法,刷新到内存。
4:释放资源。

public class BufferWriter {
     
	public static void main(String[] args) throws IOException {
     
		BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\图片\\c.txt"));
		bw.write("海绵宝宝");//注意这点跟字节的不一样,这里可以直接输入字符。
		bw.flush();
		bw.close();
		System.out.println("over");
	}
}

字符缓冲输入流使用:
BufferReader有readLine()特有方法,读取一行数据。其他使用都相似。

public class BufferR {
     
	public static void main(String[] args) throws IOException {
     
		BufferedReader br = new BufferedReader(new FileReader("E:\\图片\\a.txt"));
		BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\图片\\b.txt"));
		String line;//定义字符串类型,存取读到的每一行
		while((line=br.readLine())!=null) {
     //每次读取一行
			bw.write(line);
			bw.newLine();//换行写入
		}
		br.close();
		bw.close();
		System.out.println("over");
	}
}

完成复制操作。

public class BufferWriter {
     
	public static void main(String[] args) throws IOException {
     
		long start = System.currentTimeMillis();
		BufferedReader br = new BufferedReader(new FileReader("E:\\图片\\思维导图\\非访问修饰符.mmap"));
		BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\图片\\非访问修饰符.mmap"));
		int len=0;
		char[] ch = new char[1024];
		while((len=br.read(ch))!=-1) {
     
			bw.write(ch,0,len);
		}
		bw.flush();
		bw.close();
		System.out.println("over");
		long end = System.currentTimeMillis();
		System.out.println("一共用时"+(start-end)+"毫秒");
	}
}

你可能感兴趣的:(java)