InputStream的作用是用来表示那些从不同数据源产生输入的类。OutputStream决定了输出所要去往的目标
数据源 对应的类(都继承自InputStream)
(1)字节数组 ByteArrayInputStream [ByteArrayOutputStream]
(2)String对象 StringBufferInputStream(已弃用)
(3)文件 FileInputStream [FileOutputStream]
(4)“管道” PipedInputStream [PipedOutputStream]
(5)由其它种类的流组成的序列 SequenceInputStream
(6)其他数据源,如Internet
示例:
package test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Arrays;
/*
* ByteArrayInputStream(ByteArrayOutputStream)表示从字节数组产生输入(输出)
* 这个类其实就是对一个字节数组进行操作,把这个字节数组看成一个缓冲区
* 关闭方法是一个空方法,关闭后不影响其他方法
* 可以将数组定位到指定位置开始读/写,可以将数组从头开始读/写,可以查看数组还有几个字节可用
* 可以在某个位置做标记,可以返回到标记位置进行读/写
*/
public class ByteArrayInputStreamDemo {
public static void main(String[] args) {
// 输入流缓冲区(假设已经有若干字节)
byte[] inputBuff = new byte[] { 1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f' };
byte[] result = new byte[20];
ByteArrayInputStream inputStream = new ByteArrayInputStream(inputBuff);
// 将缓冲区的字节读入result数组并输出result
inputStream.read(result, 0, 20);
System.out.println(Arrays.toString(result));
// 将result数组写入输出流
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
outStream.write(result, 0, 20);
System.out.println(Arrays.toString(outStream.toByteArray()));
}
}
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* FileInputStream从文件中产生输入流,FileOutputStream
* 把输出流输出到文件。读/写、打开和关闭都是调用本地方法
*/
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(new File("file/bb.dat"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 读到一个字节数组
byte[] result = new byte[500];
// int b;
// while ((b = inputStream.read()) != -1)//读一个字节
// System.out.print((char) b);
inputStream.read(result);
// System.out.println(Arrays.toString(result));
inputStream.close();
FileOutputStream outputStream = null;
// true表示以追加的形式打开
outputStream = new FileOutputStream("file/bb.dat", true);
// 写入
outputStream.write((int) 'A');
outputStream.write(result);
outputStream.close();
}
}