import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
/*
* BufferedInputStream和BufferedOutputStream,为输入输出流添加缓冲
*/
public class Test10 {
public static void main(String[] args) throws IOException {
test2();
}
public static void test1() throws IOException {
// 定义文件输入输出流
FileInputStream fis = new FileInputStream("D:\\Java\\hello.txt");
FileOutputStream fos = new FileOutputStream("D:\\Java\\world.txt");
// 为流添加缓冲
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
int data = bis.read();
while (data != -1) {
System.out.println((char) data);
bos.write(data);
data = bis.read();
}
bos.flush();
bos.close();
bis.close();
fos.close();
fis.close();
}
public static void test2() throws IOException {
// 定义一个文件输出流
FileOutputStream fos = new FileOutputStream("D:\\Java\\itany.txt");
// 为文件输出流添加缓冲
BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write("欢迎来到南京网博!".getBytes());
bos.flush();
fos.close();
bos.close();
System.out.println("写入文件成功!");
/*
* 字符的编码和解码
* gbk:一个汉字占两个字节
* utf-8:一个汉字占三个字节
*/
String str="欢迎来到Java世界!";
System.out.println("原数据:"+str);
//编码:将字符串转换为字节数组
byte[] buffer=str.getBytes("gbk");//使用utf-8进行编码
System.out.println("字节数组:"+Arrays.toString(buffer));
System.out.println("数组长度:"+buffer.length);
//解码:将字节数组转换为字符串
String str2=new String(buffer, "gbk");
System.out.println("解码后的数据:"+str2);
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* FileInputStream、FileOutputStream和BufferedInputStream、BufferedOutputStream性能对比
*
* 每次读取一个字节时由于FileInputStream每次都从硬盘读取数据,所以效率很低
* 但如果FileInputStream读取数据时使用字节数据作为缓冲,则效率也会较高
* 注:建议使用BufferedInputStream、BufferedOutputStream
*/
public class Test11 {
public static void main(String[] args) throws IOException {
File src=new File("D:\\Java\\site-1.6.5.zip");
File dest=new File("D:\\Java\\backup.zip");
long time1=System.currentTimeMillis();
copy1(src, dest);
long time2=System.currentTimeMillis();
System.out.println("使用FileInputStream花费的时间:"+(time2-time1));
long time3=System.currentTimeMillis();
copy2(src, dest);
long time4=System.currentTimeMillis();
System.out.println("使用BufferedInputStream花费的时间:"+(time4-time3));
}
// 使用FileInputStream、FileOutputStream复制文件
public static void copy1(File src, File dest) throws IOException {
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
int data = fis.read();
while (data != -1) {
fos.write(data);
data = fis.read();
}
fos.flush();
fos.close();
fis.close();
}
// 使用BufferedInputStream、BufferedOutputStream复制文件
public static void copy2(File src, File dest) throws IOException {
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int data = bis.read();
while (data != -1) {
bos.write(data);
data = bis.read();
}
bos.flush();
bos.close();
bis.close();
}
}
JAVA学习笔记(二十九) - 缓冲流 BufferedInputStream &BufferedOutputStream
原文:http://blog.csdn.net/wangzi11322/article/details/44674921