IO流
一、概念:
流:流动、流向,从一端流向另一端,源头与目的地。
程序与文件|数据库|网络连接|数组,以程序为中心。
二、流的分类
1、流向:输入流与输出流
2、数据:字节流:二进制,可以以一切文件,包括(doc,图片,文字,音频,视频等等)。
字符流:只能处理纯文本
3、功能:节点:包裹源头
处理:增强功能,提高性能。
三、字节流与字符流(重点)与文件
1、字节流:
1)、输入流:InputStream read(byte[] b) 、read(byte[] b, int off, int len)+close()
与源文件FileInputStream
2)、输出流:OutputStream write(byte[] b) 、write(byte[] b, int off, int len) +flush()+close()
与源文件FileOutputStream
2、字符流:
1)、输入流:Reader read(char[] cbuf) 、read(char[] cbuf, int off, int len) +close()
与源文件FileReader
2)、输出流:Writer write(char[] cbuf) 、write(char[] cbuf, int off, int len) +flush()+close()
与源文件FileWriter
四、操作
1、举例:搬家: --->读取文件
1)、关联房子 --->建立与文件的联系
2)、选择搬家 --->选择对应流
3)、搬家 --->读取|写出
1、卡车大小 --->数组大小
2、运输 --->读取|写出
4)、完毕 --->释放资源、关闭流
2、操作
1)、建立联系
2)、选择流
3)、操作 数组大小+reader\writer
4)、关闭流
- package com.jbit.io.byteio;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* 一、读取文件
* 1、建立关联 File对象
* 2、选择输入流 InputStream FileInputStream
* 3、读取流 byte[] b = new byte[1024]+读取大小
* 4、释放资源
*
* @author 李国梁
*
*/
public class demo01 {
public static void main(String[] args) {
// 1、建立关联
File file = new File("D:/JAVA/mydoc/Study.txt");
InputStream is = null;// 提升作用域
try {
// 2、选择输出流
is = new FileInputStream(file);
// 3、操作不断读取,缓冲数组。
byte[] b = new byte[1024];
// 接收实际读取大小
int len = 0;
// 循环读取
while ((len = is.read(b)) != -1) {
/**
* 解读 String(byte[] bytes, int offset, int length)
* bytes -要解码为字符的 byte
* offset - 要解码的第一个 byte 的索引
* length - 要解码的 byte 数
*/
// 输出字节数组转成字符串
String info = new String(b, 0, len);
System.out.println(info);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件不存在");
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件读取失败!");
} finally {
if (is != null) {
try {
// 4、释放资源
is.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("关闭文件输入流失败!");
}
}
}
}
}
|
|