5-JavaIO讲述.ppt

行胜于言 敢为人先 和而不同 居安思危 * 按照功能(处理位置)流类可分为两种: 节点流(Node Stream) 节点流是最基本的流,可以单独使用,直接提供输入输出功能,不同的节点流用于从不同的地点进行输入输出 处理流(Processing Stream) 处理流是高级的流,不能单独使用,只能同节点流配合使用,用于增强流的功能。指FilterInputStream和FilterOutputStream及子类。它们分别用InputStream和OutputStream构造 行胜于言 敢为人先 和而不同 居安思危 * 行胜于言 敢为人先 和而不同 居安思危 * 节点流 行胜于言 敢为人先 和而不同 居安思危 * 用于文件 字节流:FileInputStream, FileOutputStream 字符流:FileReader, FileWriter 创建输入流 FileInputStream (File file) throws FileNotFoundException FileInputStream (String name) throws FileNotFoundException FileInputStream (FileDescriptor fdObj) throws FileNotFoundException 行胜于言 敢为人先 和而不同 居安思危 * 读取数据 // 从输入流中读取一个数据字节 int read () throws IOException // 从输入流中将最多b.length个字节数据读入byte数组 int read (byte[] b) throws IOException // 从输入流中将最多len个字节数据读入byte数组 int read (byte[] b, int off, int len) throws IOException 关闭流 close() throws IOException 使用流后必须要进行关闭操作 行胜于言 敢为人先 和而不同 居安思危 * 用于内存数组 实现类似于内存虚拟文件的功能 字节流:ByteArrayInputStream, ByteArrayOutputStream 字符流:CharArrayReader, CharArrayWriter 创建输入流 ByteArrayInputStream(byte[] buf) ByteArrayInputStream(byte[] buf, int offset, int length) 指定仅使用数组buf中的从offset开始的length个元素作为数据源 行胜于言 敢为人先 和而不同 居安思危 * 创建输出流 ByteArrayOutputStream() 创建一个大小为32字节的缓冲区 ByteArrayOutputStream(int) 根据参数指定缓冲区的大小,当数据过多时可以自动增长 行胜于言 敢为人先 和而不同 居安思危 * 用于管道 主要用于完成线程之间的通信 字节流:PipedInputStream, PipedOutputStream 字符流:PipedReader, PipedWriter PipedInputStream和PipedOutputStream对象必须进行连接而产生一个通信管道, PipedOutputStream向其中写入数据, PipedInputStream从管道中读出数据 PipedOutputStream.connect(PipedInputStream) 行胜于言 敢为人先 和而不同 居安思危 * 原理类似于“生产者-消费者”的功能。管道一侧PipedOutputStream负责生产产品,管道另一侧负责PipedInputStream消耗产品。两侧共享PipedInputStream的buffer(默认1024字节)。还有两个变量in(生产量)和out(消耗量)。in为-1表示消费完了,in==out表示生产满了。当消费者没东西可消费的时候,也就是当in为-1的时候,消费者会一直等待,直到有东西可消费。 行胜于言 敢为人先 和而不同 居安思危 * 处理流 行胜于言 敢为人先 和而不同 居安思危 * 提供缓冲功能 字节流:BufferedInputStream, BufferedOutputStream 字符流:BufferedRea

文档评论(0)

1亿VIP精品文档

相关文档