java入门教程—IO流

17 篇文章 0 订阅
17 篇文章 0 订阅

IO流概念和要素

本质是一套用于传输数据的机制

IO流的四大基本流

输入流输出流
字符流字符输入流字符输出流
字节流字节输入流字节输出流

传输的场景:

根据数据存储或者获取的位置决定传输的场景:硬盘、内存、网络、外设设备

a、字符流

字符输出流

往一个硬盘txt文件里写入数据 字符输出流 硬盘文件—FileWriter

publicclassFileWriterDemo1{
publicstaticvoidmain(String[]args)throwsIOException{
//创建文件字符输出流对象
//会去检测路径信息,如果路径信息指定的文件不存在就会创建一个空文件
//如果路径信息指定的文件已经存在而且有内容就会新建空文件把这个文件进行覆盖
FileWriterfw=newFileWriter("D:\\1.txt");
 
//往文件里写数据
//底层是根据缓冲区进行数据传输
//规定只有数据存满缓冲区才能进行数据传输
//现在传输的数据没有存满缓冲区,就滞留在缓冲区数据就没有传过去
fw.write("abc"); 
//数据存满缓冲区才能传输,否则可能会丢失数据
//手动进行冲刷缓冲区
fw.flush(); 
//当数据传输完毕需要进行关流
//会自带自动冲刷缓冲区的操作
fw.close(); 
//文件字符输出流对象变成一个无用对象---数据已经传输完毕不会使用对象
//对象置为null变为无用对象
fw=null;
}
}
字符输入流

从一个硬盘txt文件读取数据 字符输入流 硬盘文件—FileReader

publicclassFileReaderDemo2{
publicstaticvoidmain(String[]args)throwsIOException{
//创建文件字符输入流对象
FileReaderfr=newFileReader("D:\\2.txt");
//自建缓冲区
char[]cs=newchar[5];
intlen=-1;
//根据数组进行读取,每次返回的是读取到的字符个数
//把读取到的字符都放进数组中
//结束标志是-1
while((len=fr.read(cs))!=-1){
//输出数组内容就是读取的内容
//把字符数组内容转成字符串输出
System.out.println(newString(cs,0,len));
}
}
}

b、字节流

字节输出流

往一个硬盘txt文件里写入数据 字节输出流 硬盘文件—FileOutputStream

public class FileOutputStreamDemo{
public static void main(String[]args)throwsIOException{
//创建文件字节输出流对象
//布尔值为true表明可以写入文件时追加数据,不写就默认是false
FileOutputStream fos=new FileOutputStream("D:\\abc.txt",true);
//往文件写入数据
//底层没有自带缓冲区
fos.write("abc".getBytes());
//关流
fos.close();
}
}
字节输入流

从一个硬盘txt文件里获取数据 字节输入流 硬盘文件—FileInputStream

public class FileInputStreamDemo{
public static void main(String[]args)throwsIOException{
//创建文件字节输入流对象
FileInputStream fin=new FileInputStream("D:\\abc.txt");
//自建缓冲区
byte[] bs=new byte[4];
int len=-1;
//每次读取的字节存储到数组中,返回的是读取的字节个数
while((len=fin.read(bs))!=-1){
System.out.println(newString(bs,0,len));
}
}
}

c、缓冲流(提供缓冲区)

BufferedReader—给字符输入流提供缓冲区进行数据传输
readLine() 读取一行

publicclassBufferedReaderDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//底层依然还是字符输入流对象进行读取数据
//但是读取的数据的传输有缓冲流提供的缓冲区进行传输
BufferedReaderbr=newBufferedReader
(newFileReader("D:\\2.txt"));
//读取一行数据
/*System.out.println(br.readLine());
System.out.println(br.readLine());
System.out.println(br.readLine());
//读取数据的结束标志就是返回null
System.out.println(br.readLine());*/
Stringstr=null;
while((str=br.readLine())!=null){
System.out.println(str);
}
//关流
br.close();
}
}

d、转换流

OutputStreamWriter—字符流转字节流

publicclassOutputStreamWriterDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//创建转换流对象
//写出的数据是字符串,默认由字符流来进行传输
//转换流对象是由字节输出流对象来构建
//底层是由字节输出流对象来进行传输
//字符流转字节流
OutputStreamWriterosw=newOutputStreamWriter
(newFileOutputStream("D:\\b.txt"));
//写出数据
osw.write("abc");
//关流
osw.close();
}
}

InputStreamReader—字节流转字符流

publicclassInputStreamReaderDemo{
publicstaticvoidmain(String[]args)throwsIOException{
//创建转换流对象
//转换流的对象是由字节输入流对象来构建
//底层是由字节输入流对象来完成读取文件
//展示数据时是通过字符数组来展示的,默认是字符流往字符数组存放数据来展示
//字节流转成字符流
InputStreamReaderisr=newInputStreamReader
(newFileInputStream("D:\\b.txt"));
//读取
char[]cs=newchar[3];
int len=-1;
while((len=isr.read(cs))!=-1){
System.out.println(newString(cs,0,len));
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值