相对于内存来说,从文件或网络连接中读取数据到内存称为输入流(InputStream和Reader),从内存中读取数据往文件中写称为输出流(OutputStream和Writer)。其中InputSream和OutputStream针对字节流(8bit),Reader和Writer针对字符流(2个字节)。所以一般纯文本可以用字符流来处理,如果含有图片、视频等一些非文字的流数据文件就必须按字节流来处理。
一、java.io.InputStream
1.1、read()
/**
* 从数据中读取一个字节并返回该字节,流的结尾返回-1
*/
abstract int read();
File file = new File("C:\\Users\\Administrator\\Desktop\\io.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
int line = 0;
while((line = bis.read())!=-1){
System.out.println(line);
}
fis.close();
bis.close();
测试结果:97,文件中内容是a,97正好是a的ASCII编码对应的十进制数字。
1.2、read(byte[] b)
/**
* 读入一个字节数组,并返回实际读入的字节数,流的结尾返回-1,最多返回b.length-1个字节
*/
int read(byte[] b);
下面我们用实例来看一下:
File file = new File("C:\\Users\\Administrator\\Desktop\\io.txt");
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
byte[] bytes = new byte[3];
int line = 0;
StringBuilder result = new StringBuilder();
while((line = bis.read(bytes))!=