根据数据流向不同分为:输入流和输出流。
输入流--InputStream
java.io.InputStream类是所有Java IO输入流的基类,它是以字节为单位的输出流。
类图展示
ByteArrayInputStream:字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中
FileInputStream:从文件读取数据
ObjectInputStream:反序列化流,将之前使用 ObjectOutputStream 序列化的原始数据恢复为对象,以流的方式读取对象。
PipedInputStream管道读取流
FilterInputStream]是过滤输出流
BufferedInputStream: 提供了缓冲功能。
DataInputStream: 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。
PipedInputStream: 允许以管道的方式来处理流。当连接到一个PipedOutputStream后,它会读取后者输出到管道的数据。
PushbackInputStream: 允许放回已经读取的数据。
SequenceInputStream: 能对多个inputstream进行顺序处理。
inputStream主要api方法
read:读取数据流字节,存储到缓冲区数组
public abstract int read()
public int read(byte[] b)
public int read(byte[] b,int off,int len)
available():获取数据流字节长度大小close():关闭并且释放流资源mark(int readlimit):设置输入流的当前位置reset():重新定位输入流的位置skip(long n):跳过并丢弃输入流的n个字节
FileInputStream。
FileInputStream读取文件。
/**
- 读取filePath的文件,将文件中的数据按照行读取到String数组中
- @param filePath 文件的路径
- @return 文件中一行一行的数据
*/
public static String[] readToString(String filePath) {
File file = new File(filePath);
Long filelength = file.length(); // 获取文件长度
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in =new FileInputStream(file); in .read(filecontent); in .close();
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
String[] fileContentArr = new String(filecontent).split("\r\n");
return fileContentArr; // 返回文件内容,默认编码
}