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(); } }