- 浏览: 55615 次
- 性别:
- 来自: 上海
最新评论
流(Stream)是字节的源或目的。
两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
FileInputStream和FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。
BufferedInputStream和BufferedOutputStream
过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。
DataInputStream和DataOutputStream
过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。
PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。
java 代码
- //用FileInputStream和FileOutputStream文件读写
- import java.io.*;
- public class StreamTest {
- public static void main(String[] args) throws Exception {
- /*int data;
- while((data=System.in.read())!=-1) {//读用户输入数据
- System.out.write(data);写出用户读入数据*/
- //写文件
- FileOutputStream fos = new FileOutputStream("1.txt");
- fos.write("http://www.windycool.com".getBytes());
- fos.close();
- //读文件
- FileInputStream fis = new FileInputStream("1.txt");
- byte[] buf = new byte[100];
- int len = fis.read(buf);
- System.out.println(new String(buf,0,len));
- fis.close();
- }
- }
java 代码
- //用BufferedInputStream和BufferedOutputStream文件读写
- /*
- 作为另一种输入流,BufferedInputStream 为添加了功能,即缓冲输入和支持
- mark 和 reset 方法的能力。创建 BufferedInputStream 时即创建了一个
- 内部缓冲区数组。读取或跳过流中的各字节时,必要时可根据所包含的输入流再次
- 填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset
- 操作导致在从所包含的输入流中获取新的字节前,再次读取自最后一次 mark 操作
- 以来所读取的所有字节。
- */
- import java.io.*;
- public class StreamTest {
- public static void main(String[] args) throws Exception {
- FileOutputStream fos = new FileOutputStream("1.txt");
- BufferedOutputStream bos = new BufferedOutputStream(fos);
- bos.write("http://www.windycool.com".getBytes());
- // bos.flush();
- bos.close();//将fos流链接到了bos流,关闭只需关闭尾端的bos流
- FileInputStream fis = new FileInputStream("1.txt");
- BufferedInputStream bis = new BufferedInputStream(fis);
- byte[] buf = new byte[100];
- int len=bis.read(buf);
- System.out.println(new String(buf,0,len));
- bis.close();
- }
- }
java 代码
- /*
- public class PipedInputStream
- extends InputStream
- 传送输入流应该连接到传送输出流;传送输入流会提供要写
- 入传送输出流的所有数据字节。通常,数据由某个线程从
- PipedInputStream 对象读取,并由其他线程将其写入到相应的
- PipedOutputStream。不建议对这两个对象尝试使用单个线程,
- 因为这样可能会死锁该线程。传送输入流包含一个缓冲区,可在缓冲
- 区限定的范围内将读操作和写操作分离开。
- public class PipedOutputStream
- extends OutputStream
- 传送输出流可以连接到传送输入流,以创建通信管道。传送输出流
- 是管道的发送端。通常,数据由某个线程写入 PipedOutputStream
- 对象,并由其他线程从连接的 PipedInputStream 读取。不建议对
- 这两个对象尝试使用单个线程,因为这样可能会死锁该线程。
- */
- import java.io.*;
- public class PipedStreamTest {
- public static void main(String[] args) {
- PipedOutputStream pos = new PipedOutputStream();
- PipedInputStream pis = new PipedInputStream();
- try {
- pos.connect(pis);
- new Producer(pos).start();
- new Consumer(pis).start();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
- class Producer extends Thread {
- private PipedOutputStream pos;
- public Producer(PipedOutputStream pos) {
- this.pos = pos;
- }
- public void run() {
- try {
- pos.write("Hello,welcome you!".getBytes());
- pos.close();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
- class Consumer extends Thread {
- private PipedInputStream pis;
- public Consumer(PipedInputStream pis) {
- this.pis=pis;
- }
- public void run() {
- try {
- byte[] buf = new byte[100];
- int len = pis.read(buf);
- System.out.println(new String(buf,0,len));
- pis.close();
- }
- catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
- //输出 Hello,welcome you!
Java的I/O库提供了一个称做链接的机制,可以将一个流与另一个流首尾相接,形成一个流管道的链接。这种机制实际上是一种被称为Decorator(装饰)设计模式的应用。
通过流的链接,可以动态的增加流的功能,而这种功能的增加是通过组合一些流的基本功能而动态获取的。
我们要获取一个I/O对象,往往需要产生多个I/O对象,这也是Java I/O库不太容易掌握的原因,但在I/O库中Decorator模式的运用,给我们提供了实现上的灵活性。
更多孙鑫lesson 7
发表评论
-
ddddddddddddddd
2009-04-07 22:56 0dddddddddddddd -
工厂模式经典例子
2007-10-31 21:28 1549package org.lxh.demo ; import j ... -
笔记**************
2007-10-31 21:26 1337环境变量C:\jdk1.5.0_04 JDK安装路径 JA ... -
thinkinjava一系列项目
2007-08-15 13:26 1166本章包含了一系列项目 ... -
附录C Java编程规则
2007-08-15 13:25 1003本附录包含了大量有用 ... -
附录A 使用非JAVA代码
2007-08-15 13:24 1334附录A 使用非JAVA代码 JA ... -
对比C++和Java
2007-08-15 13:20 950附录B 对比C++和Java “作为一名C++程序员,我们早 ... -
JSP笔记
2007-08-08 18:16 2140Tomcat下建立虚拟目录 例: 建立目录 d ... -
JSP & Servlet解惑^_^
2007-08-07 19:03 1583钻进去几天,虽然网上找过问题的答案,但到现在看到Marty ... -
java笔记十
2007-08-03 21:03 728java 代码 pa ... -
java笔记九
2007-08-02 12:45 1004java 代码 /* AWT(A ... -
java笔记八
2007-08-01 19:02 976对象序列化 将对象转换为字节流保存起来,并在日后还原这个对象, ... -
java笔记七
2007-08-01 16:16 1088java 代码 /*RandomAcce ... -
java笔记五
2007-07-31 08:52 850ArrayList和LinkedList的比较 ArrayLi ... -
java笔记四
2007-07-31 08:51 954程序是计算机指令的集合,它以文件的形式存储在磁盘上。 进程:是 ... -
java笔记三
2007-07-28 18:27 892java 代码 /*java迭代器Iterat ... -
eclipse快捷键
2007-07-28 13:07 821本文档从Eclipse软件上整 ... -
java笔记二
2007-07-28 13:06 827java 代码 //*孙鑫教程笔记。接口中run ... -
java笔记一
2007-07-27 17:15 842java 代码 //: notes about ... -
在eclipse + MyEclipse+tomcat下配置建立J2EE工程环境
2007-07-26 19:13 4395在eclipse + MyEclipse+tomcat下配置 ...
相关推荐
java笔记java笔记java笔记java笔记java笔记java笔记java笔记
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
#### 6. 对象和类 ##### 6.1 面向对象与面向过程 面向对象编程(OOP)是一种编程范式,它强调使用对象来表示和处理问题域中的实体。与之相对的是面向过程编程,它侧重于函数和过程。 ##### 6.2 对象的概念 对象是...
【宋红康java笔记】是一份综合性的Java学习资料,由知名编程教育者宋红康编撰。这份压缩包文件包含了大量的Java编程知识点,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言的核心概念与高级特性。以下是根据...
【Java笔记桌面程序】 在IT领域,开发个人定制的桌面应用程序是解决特定需求的有效方法。本项目名为"Java笔记桌面程序",它是由一个热衷于编程的开发者为解决其所在公司无法使用网络笔记客户端的问题而自创的。这个...
这份"非常好的java笔记"无疑是初学者踏入这个领域的宝贵资源。笔记由培训班的专业老师编写,内容详细且全面,旨在帮助初学者系统地学习和理解Java的基础知识。 首先,Java基础部分会涵盖变量、数据类型、运算符、...
专业的Java笔记可能会涉及这些内容,帮助学习者掌握Java的最新发展。 遗憾的是,由于【部分内容】部分不包含实际的笔记内容,无法进一步提供具体的编程示例和深入的解释。如果要学习Java,最好的方式是从学习Java的...
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 ...
《狂神说Java笔记资料》是一份全面涵盖Java开发基础知识的文档集,旨在帮助学习者系统地掌握Java编程。这份笔记包含多个章节,每个章节都深入讲解了一个特定的主题,覆盖了从初学者到进阶开发者必备的知识点。 1. *...
【Java笔记内容概览】 1. **基础语法**:涵盖变量、数据类型、运算符、流程控制(条件语句、循环语句)、数组、字符串等基础知识。 2. **面向对象**:讲解类、对象、封装、继承、多态等核心概念,以及构造函数、...
全套java笔记整理,侧边栏目录结构方便查看,纯手工整理。达内笔记整理。 已整理成带侧边栏目录的网页结构,方便复习大纲和跳转查看。大部分都带有笔记代码。 (默认设置为深珊瑚蓝色调,不喜欢可以把配置文件里的...
"Java超强笔记"正是一份专为新手准备的学习资源,它全面涵盖了从Java环境的搭建到软件设计的各种概念,旨在提供一个易读且系统的学习路径。 首先,笔记可能会从Java的起源和发展开始介绍,让你了解这门语言的历史...
### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...
java笔记java笔记java笔记java笔记java笔记java笔记java笔记java笔记
6. 反射与动态代理:17反射与动态代理.md探讨了Java的反射机制,允许在运行时获取类的信息并操作对象。动态代理则提供了一种在运行时创建代理对象的能力,常用于实现AOP(面向切面编程)。 通过阅读和理解这些笔记...
详细的描述了java的基本知识,配合看java视频更好了。 笔记中有集合,泛型,线程,的详细案例,还有java.net的资料
6. **多线程**:阐述Java中的并发编程,包括线程的创建、同步机制(synchronized、wait/notify、Lock接口)、线程池以及并发集合。 7. **设计模式**:介绍常见的设计模式,如单例、工厂、装饰器、观察者等,帮助...
【标题】"韩顺平java笔记完整版.zip(无笔记,只是代码)"指的是一个包含韩顺平老师Java教学视频中所有代码的压缩文件。这个压缩包不包含笔记,而是专注于提供实际的编程示例,使得学习者可以直接查看和学习Java编程...
6. **网络编程**:Java提供Socket编程接口,可用于实现客户端/服务器模型的网络通信。笔记会讲解TCP和UDP协议,以及如何使用Java进行网络编程。 7. **反射与注解**:反射机制允许在运行时动态获取类的信息并操作...