7. 字符流的缓冲区对象(也叫处理流、包装流)
利用数组提升了文件的读写速度,运行效率提升了
我们想到了效率问题,Java工程师( Oracle),也想到了提升效率
写好了字符流的缓冲区对象,目的提供流的写,读的效率
写入流的缓冲区对象BufferedWriter
BufferedWriter(Writer out)
参数Writer类型的参数,传递的参数是Writer类的子类对象
缓冲区,提供流的写的效率,哪个流的效率 FileWriter
void newLine() 写一个换行,具有跨平台
不用newLine()方法,也可以实现换行 \r\n
\n Linux下的换行符号
字符缓冲流示例
BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
import java.io.*;
public class BufferedWriterDemo {
public static void main(String[] args)throws IOException {
//字符输出流对象
FileWriter fw=new FileWriter("F:\\f.txt");
//建立缓冲区对象,提高输出流的效率
BufferedWriter bfw=new BufferedWriter(fw);
bfw.write("哈w哈");
bfw.write("呵w呵");
bfw.newLine();//写一行,BufferedReader可以读一行
bfw.write("嘻w嘻");
bfw.append("append");//追加写
bfw.flush();
bfw.close();
}
}
读取流的缓冲区对象BufferedReader
BufferedReader(Reader in)
参数Reader类型参数,传递的是Reader类的子类对象
缓冲区,提供流的读的效率,哪个流的效率FileRreader
读取一行的方法 readLine(),文件末尾返回null
不是末尾返回字符串 String
字符缓冲流示例
BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
import java.io.*;
public class BufferedReaderDemo {
public static void main(String[] args)throws IOException {
//字符输出流对象
FileReader fr=new FileReader("F:\\Thinking.txt");
//建立缓冲区对象,提高输出流的效率
BufferedReader bfw=new BufferedReader(fr);
//读一行,返回字符串,末位返回null
String line=null;
while((line=bfw.readLine())!=null){
System.out.println(line);
}
bfw.close();
}
}8、字节流
例程1:
import java.io.*;
public class InputStreamDemo {
public static void main(String[] args)throws IOException {
FileInputStream fis=new FileInputStream("F:\\Thinking.txt");
byte[] bytes=new byte[1024];//1kb
int len=0;
len=fis.read(bytes);//len表示有效个数
System.out.println(new String(bytes));
System.out.println(len);
}
}
例程2:
import java.io.*;
public class OutPutStreamDemo {
public static void main(String[] args) throws IOException{
FileOutputStream fos=new FileOutputStream("F:\\f.txt");
//写字节数组
byte[] bytes={97,98,99};
fos.write(bytes,0,bytes.length);//第二个参数是下标,第三个是写入的个数
fos.write("\r\n".getBytes());//换行
//写字符数组,只能将字符串转成字节数组,用String类方法getBytes
fos.write(97);//写入了a字符
fos.write("zpc".getBytes());
fos.close();
}
}
例程3:
import java.io.*;
public class CopyFile {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("E:\\KuGou\\屠洪刚-孔雀东南飞.mp3");
FileOutputStream fos=new FileOutputStream("I:\\孔雀东南飞.mp3");
int len=0;
byte[] bytes=new byte[1024];
while((len=fis.read(bytes))!=-1){
fos.write(bytes,0,len);
}
fos.close();
fis.close();
}
}
例程4:
import java.io.*;
/*
* 字节流读取键盘的输入
* 用户一行一行的写,但是read方法每次只能读取一个字节,不方便
* 能否一次读取一个行呢 可以使用转换流
* 字节流转换成字符流后可以使用字符缓冲流按行读取
*/
public class KeyInDemo1 {
public static void main(String[] args) throws IOException {
InputStream in = System.in;// 返回字节输入流对象
// int len=0;
// len=in.read();//read方法每次只能读取一个字节
// System.out.println(len);
// 使用转换流将字节输入流转成字符输入流
InputStreamReader isr = new InputStreamReader(in)