【Java实战】IO流(字符流,缓冲流详细内容)

接上篇IO流

FileReader(文件字符输入流)

作用:以内存为基准,可以把文件中的数据以字符形式读到内存中去。

public int  read() 

public int read(char[] buffer)

try(
//这里只能放置资源变量
Reader fr=new FileReader("myio//copy.mp4");
){
int b;
while(((b=fr.read())!=-1){
   System.out.println((char) c)
}catch(IOException e){
 e.printStackTrace();
}

注:

每次读取一个字符的内容,性能较差

try(
//这里只能放置资源变量
Reader fr=new FileReader("myio//copy.mp4");
){
char[] buffer=new char[1024];
int len;
while(((len=fr.read(buffer))!=-1){  //读多少倒多少
   System.out.println((char) c)
}catch(IOException e){
 e.printStackTrace();
}

FileWriter(文件字符输出流)

作用:以内存为基准,把内存中的数据以字符的形式写到文件中去。

void wtrie(int c)

void write(String str)

void write(String str,int off,int len)

voidwrite(char[] cbuf)

void write(char[] cubuf,int off,int len)


换行

windows:\r\n(写\r或\n都可以,Java会自动补全)

Linux: \n

Mac: \r


续写

打开续写开关即可,创建对象的第二个参数

默认false:关闭续写。会清空文件

手动传递true:打开续写,不会清空文件

Writer fw=new EileWriter("myio//a.txt",true);

注意事项:

字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效。

关闭流(包含刷新操作)

刷新后流可以继续使用,关闭后流不可以继续使用。

刷新:public void flush()

关闭:public void close()


总结:3

字节流适合做一切文件的拷贝(音视频,文本);字节流不适合读取中文内容输出

字符流适合做文本文件的操作(读,写)。


缓冲流

作用:对原始流进行包装,以提高原始流读写数据的性能。

字节缓冲流

作用:提高字节流读写数据的性能


BufferedReader(字符缓冲输入流)

作用:自带8K(8192)的字符缓冲流,可以提高字符输入流读取字符数据的性能。

原理:字节缓冲输入流自带8KB缓冲池;字节缓冲输出流也自带了8KB缓冲池。

构造器说明
publicBufferedReader(Reader r)字符缓冲输入流

新增功能:按照行读取字符

方法说明
public String readLine()按行读取,如果没有数据可读,返回null
public class BufferedReader{
 public static void main(String[] args){

try(
//这里只能放置资源变量
Reader fr=new FileReader("myio//copy.mp4");
BufferedReader br=new BufferedReader(fr);
){
String line;
while(((line=br.readLine(buffer))!=null){  //记录每行数据
   System.out.println(line)
}catch(IOException e){
 e.printStackTrace();
}

}
}

BufferedWriter(字符缓冲输出流)

作用:自带8KB的字符缓冲池,可以提高字符输出流写字符

构造器说明
public BufferedWriter(Writer r)字节缓冲输出流

新增功能:换行

方法说明
public void newLine()换行

public class BufferedReader{
 public static void main(String[] args){

try(
//这里只能放置资源变量
Writer fw=new FileWriter("myio//copy.mp4");
BufferedWriter br=new BufferedWriter(fw);
){
String line;
while(((line=br.readLine(buffer))!=null){  //记录每行数据
   System.out.println(line)
   fw.newLine();
}catch(IOException e){
 e.printStackTrace();
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值