JAVA IO流

什么是输入/输出流

Java 程序通过流来完成输入/输出,所有的输入/输出以流的形式处理。因此要了解 I/O 系统,首先要理解输入/输出流的概念。

输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。例如键盘就是一个标准的输入设备,而显示器就是一个标准的输出设备,但是文件既可以作为输入设备,又可以作为输出设备。

数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。

  • 按照流的方向主要分为输入流和输出流两大类。

在这里插入图片描述
在这里插入图片描述

  • 数据流按照数据单位的不同分为字节流和字符流。

在这里插入图片描述

  • 按照功能可以划分为节点流和处理流。

常用字节字符流流代码

文件字节流

//读取文件
File file=new File("./test.txt");
//输出流
OutputStream outputStream=new FileOutputStream(file,true);
outputStream.write("你好".getBytes());
outputStream.close();
//输入流,用bytes数组和stringBuilder接收
InputStream inputStream=new FileInputStream(file);
byte[] bytes=new byte[1024];
int length=0;
StringBuilder stringBuilder=new StringBuilder();

while((length=inputStream.read(bytes))!=-1){
    stringBuilder.append(new String(bytes,0,length));
}
inputStream.close();

System.out.println(stringBuilder);

缓冲字节流

InputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("./test.txt"));

byte[] bytes=new byte[1024];
int l=0;
StringBuffer stringBuffer=new StringBuffer();

while((l=bufferedInputStream.read(bytes))!=-1){
    stringBuffer.append(new String(bytes,0,l));
}

bufferedInputStream.close();
System.out.println(stringBuffer);

字符流

OutputStreamWriter outputStreamWriter=new OutputStreamWriter(new FileOutputStream("./test.txt",true),"UTF-8");
outputStreamWriter.write("你好");
outputStreamWriter.close();

InputStreamReader inputStreamReader=new InputStreamReader(new FileInputStream("./test.txt"));
//字符数组接受,一次读取多少字符
char[] chars=new char[1024];

int length=0;
StringBuilder stringBuilder=new StringBuilder();
while((length=inputStreamReader.read(chars))!=-1){
    stringBuilder.append(chars,0,length);
}
inputStreamReader.close();

System.out.println(stringBuilder);

文件字符流

FileWriter fileWriter=new FileWriter("./test.txt",true);
fileWriter.write("在吗");
fileWriter.close();

FileReader fileReader=new FileReader("./test.txt");
char[] chars=new char[1024];
int l=0;
StringBuilder stringBuilder=new StringBuilder();

while((l=fileReader.read(chars))!=-1){
    stringBuilder.append(chars,0,l);
}
System.out.println(stringBuilder.toString());

字符缓冲流

BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter("./test.txt",true));
bufferedWriter.newLine();
bufferedWriter.write("你好");
bufferedWriter.close();

BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream("./test.txt")));
String line;
StringBuilder stringBuilder=new StringBuilder();

//使用readline读取一行的数据
while((line=bufferedReader.readLine())!=null){
    stringBuilder.append(line);
}
bufferedReader.close();


System.out.println(stringBuilder);        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值