一,概述:
I指(InputStream)输入流;O指(OutputStream)输出流。两者又因数据单位都是字节。属于字节流。(8位)
相对Reader(字符输入流);Writer(字符输出流)。属于字符流。(16位)
输入流:就是把数据读入到内存中。读数据
输出流:就是把内存中的数据,输出到其他地方。 写数据
二,OutputStream(字节输出流)
1,构造方法
OutputStream() |
代码示例
OutputStream out=new FileOutputStream(f1);//f1为输出的方向
2,常用方法
void | write(int b) 将一个 integer(数组长度)写入此流 |
练习:使用输出流,向一文件内输出内容
package Test00.File.Output;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) throws IOException {
File f1=new File("D:/a.txt");
f1.createNewFile();//创建文件
OutputStream out=new FileOutputStream(f1);//定义一个输出流,向f1文件输出内容
Scanner sc=new Scanner(System.in);//定义一个扫描器,输入内容
System.out.println("请输入:");
String next = sc.next();
byte[] bytes = next.getBytes();//获取字符串对应解析后的byte数组,
out.write(bytes);
}
}
三,InputStream(字节输入流)
1,构造方法
InputStream() |
代码示例
InputStream in=new FileInputStream(f1);//f1为输入方向
2,常用方法
read() 从输入流中读取数据的下一个字节。 |
方法解释:从输入流中读取数据的下一个字节。返回 0
到 255
范围内的 int
字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1
。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞
连续读取单个字节
package Test00.File.inputStream;
import java.io.*;
public class Test02 {
//字节输入流(不能读汉字)
public static void main(String[] args) throws IOException {
File f1=new File("D:/a.txt");
InputStream in=new FileInputStream(f1);
//方法一(不推荐)
// while (true){
// int n=in.read();
// if (n!=-1){
// System.out.println((char) n);
// }else {
// break;
// }
// }
//方法二(推荐)
int n;
while ((n=in.read()) !=-1 ){
System.out.println((char)n);
}
}
}
连续读取多个字节(每个汉字占三个字节)
package Test00.File.inputStream;
import java.io.*;
//字符输入流
public class Test01 {
public static void main(String[] args) throws IOException {
File f1=new File("D:/a.txt");
InputStream in=new FileInputStream(f1);
// byte[] buffer=new byte[10];
// while (true){
// int n=in.read(buffer);
// if (n!=-1){
// String s=new String(buffer,0,n);
// System.out.println(s);
// }else {
// break;
// }
// }
int n;
byte[] a=new byte[20];//最大可读20个字符
while ((n=in.read(a)) !=-1 ){
String s=new String(a,0,n);
System.out.println(s);
}
}
}