字节(byte)缓冲流
字节缓冲输入流(*):BufferedInputStream
- BufferedInputStream(InputStream in):这里的in是一个InputStream类型(建立细管道是使用大管道的前提)
import java.io.*;
public class Demo05 {
public static void main(String[] args) {
try {
long starttime=System.currentTimeMillis();
//建立细通道
FileInputStream fis = new FileInputStream("C:\\Users\\chai\\Desktop\\cdg.txt");
//建立大管道
BufferedInputStream bis = new BufferedInputStream(fis);
//定义每次搬运的数量
byte[] car=new byte[1024];//每次最多搬运1kb
int len=0;
while((len=bis.read(car))!=-1){
System.out.println((char)len);
}
//关闭流
fis.close();
bis.close();
long endtime=System.currentTimeMillis();
System.out.println("所用时间:"+(endtime-starttime));
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节缓冲输出流(*):BufferedOutputStream
- BufferedOutputStream(OutputStream out):这里的in是一个OutputStream类型(建立细管道是使用大管道的前提)
- 将一个文件的内容复制到另一个文件
import java.io.*;
public class Demo05 {
public static void main(String[] args) {
try {
long starttime=System.currentTimeMillis();
//建立细通道
FileInputStream fis = new FileInputStream("C:\\Users\\chai\\Desktop\\cdg.txt");
FileOutputStream fos = new FileOutputStream("C:\\Users\\chai\\Desktop\\cdg1.txt");
//建立大管道
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//定义每次搬运的数量
byte[] car=new byte[1024];//每次最多搬运1kb
int len=0;
while((len=bis.read(car))!=-1){
bos.write(car, 0, len);
}
//关闭流
bis.close();
bos.close();
long endtime=System.currentTimeMillis();
System.out.println("所用时间:"+(endtime-starttime));
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流 字符流优缺点比较
字节流
- 字节流可以读取一切文件
字符流
- 字符流读取纯文本文件比较方便:已经帮我们乱码问题
字符(char)流
-
Reader:字符输入祖宗类
- FileReader:
- BufferedReader:
-
Writer:字符输出祖宗类
- FileWriter:
- BufferedWriter:
-
字符输入流:FileReader
import java.io.FileReader;
public class Demo07 {
public static void main(String[] args) {
try {
//1.水厂(数据)
//2.铺水管:盘符-->程序
FileReader fr = new FileReader("C:\\Users\\chai\\Desktop\\cdg.txt");
//3.开水龙头
char[] car=new char[1024];
int len=0;
while((len=fr.read(car))!=-1){
String str = new String(car,0,len);//char数组转string数组
System.out.println(str);
}
//4.关水龙头
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
char数组转String数组:String str=new String(char数组,起始下标,结束下标);
- 字符输出流:FileWriter
import java.io.FileWriter;
import java.io.IOException;
public class Demo07{
public static void main(String[] args) {
try {
//1.数据源
String str="zho中gnh国anf你osn好jg";
//2.铺设管道
FileWriter fw = new FileWriter("C:\\Users\\chai\\Desktop\\cdg.txt");
//3.开水龙头
fw.write(str);
//关水龙头
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}