一、 IO 流的三种分类方式
1. 按流的方向分为:输入流和输出流
2. 按流的数据单位不同分为:字节流和字符流
3. 按流的功能不同分为:节点流和处理流
二、 IO 流的四大抽象类:
字符流: Reader Writer
字节流: InputStream (读数据)
OutputStream (写数据)
三、 InputStream 的基本方法
int read () throws IOException 读取一个字节以整数形式返回,如果返回 -1 已到输入流的末尾
void close () throws IOException 关闭流释放内存资源
long skip ( long n ) throws IOException 跳过 n 个字节不读
四、 OutputStream 的基本方法
void write ( int b ) throws IOException 向输出流写入一个字节数据
void flush () throws IOException 将输出流中缓冲的数据全部写出到目的地
五、 Writer 的基本方法
void write ( int c ) throws IOException 向输出流写入一个字符数据
void write ( String str ) throws IOException 将一个字符串中的字符写入到输出流
void write ( String str , int offset , int length )
将一个字符串从 offset 开始的 length 个字符写入到输出流
void flush () throws IOException
将输出流中缓冲的数据全部写出到目的地
六、 Reader 的基本方法
int read () throws IOException 读取一个字符以整数形式返回,如果返回 -1 已到输入流的末尾
七、节点流类型
八、访问文件之 FileInputStream 和 FileOutputStream 继承基类用于向文件中输入输出字节
九、访问文件之 FileReader 和 FileWriter 继承基类用于向文件中输入输出字符
---- 输出流在构造函数第二个参数可以设置 true 意义为跟在已有文件后进行输入
---- 此类流会抛出 FileNotFoundException 需要对其进行显示捕捉
十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。
此处理流的构造方法都得传相对应的基类类型
BufferedReader :提供了 readLine 方法用于高效读取一行字符串
BufferedWriter :提供了 newLine 用于写入一个行分隔符也就是换行
BufferedInputStream 没多大用处
BufferedOutputStream 没多大用处
十一、转换流:主要作用将字节流转换成字符流。用处较大!
转换流在构造时可以指定其编码集合
InputStreamReader 需要和 InputStream 套接
OutputStreamWriter 需要和 OutputStream 套接
例: OutputStreamWriter osw = new OutputStreamWriter ( new FileOutputStream (文件路径);
方法例: osw.getEncoding (); 获得流的编码方式
十二、数据流与字节数组流:
数据流主要为实现可以 存取 Java 原 始数据类型如 long , boolean
数据流是字节流
DataInputStream 需要和 InputStream 套接
DataOutputStream 需要和 OutputStream 套接
DataInputStream 方法: readBoolean () readInt () read…… () ……
readUTF (): 网络传输 常用方法 读一个 Unicode 字符串
DataOutputStream 方法与 DataInputStream 基本对应为写的方法 // 此构造函数等于已可以往一个字节数组里输入内容
ByteArrayOutputStream baos = new ByteArrayOutputStream (); // 此方法为获取一个字节数组方法返回字节数组
baos.toByteArray (); // 此方法获取字节数组占了多少字节
new ByteArrayInputStream (一个字节数组)。 available ()
ByteArrayOutputStream baos =new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeDouble(Math.random());
dos.writeBoolean(true);
ByteArrayInputStream bais =new ByteArrayInputStream(baos.toByteArray());
System.out.println(bais.available());
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
dos.close();
dis.close();
} catch(IOException e){
e.printStackTrace();
}
十二、 Print 流
Print 流只有输出流无输入流, PrintWriter 和 PrintStream 分别针对字符字节
两个类提供了重载的 Print 和 Println 方法用于多种数据类型的输出
PrintWriter 和 PrintStream 的输出操作不会抛出异常
PrintWriter 和 PrintStream 有自动 flush 功能
----System.setOut( 接收 OutputStream 类 ): 用于设置系统默认输出流
十二、 Object 流
等同于 c# 序列化,用直接将 Object 写入或读出
transient 关键字为不序列化此成员变量
需要序列化的类必须实现 Serializable 接口
主要方法: writeObject ( Object ); readObject ();
读出为 Object 类型需要强转数据类型
import java.io.*;
public class TestObjectIO {
public static void main(String args[]) throws Exception {
T t = new T();
t.k = 8;
FileOutputStream fos = new FileOutputStream("d:/share/java/io/testobjectio.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("d:/share/java/io/testobjectio.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
T tReaded = (T)ois.readObject();
System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d + " " + tReaded.k);
}
}
class T implements Serializable
{
int i = 10;
int j = 9;
double d = 2.3;
transient int k = 15;
}
分享到:
相关推荐
Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...
IO流的概念基于流(Stream)模型,数据以字节或字符序列的形式流动。Java IO库提供了丰富的类和接口来支持不同类型的流,包括字节流、字符流、对象流、缓冲流、转换流以及过滤流等。 字节流(Byte Stream)是处理...
#### 一、Java IO流概念及背景 - **引入原因**:在Java中,为了能够方便地与外部设备(如硬盘、网络等)进行数据交互,设计了一套标准的输入输出处理机制,即IO流。这使得程序能够更加灵活地处理各种类型的数据。 ...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
Java IO流是Java编程语言中处理输入和输出的重要机制,它允许程序与各种类型的输入源(如键盘、文件、网络连接)以及输出目标(如显示器、文件、网络)进行交互。在Java中,I/O流被设计为面向对象,使得处理数据变得...
Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符编码以及一些实用的IO类和方法。在实例开发中,我们将深入理解这些概念并应用到实际项目中。 首先,Java IO流按照数据传输的方向...
Java IO流和Socket是Java编程语言中用于处理输入输出和网络通信的重要概念。在这个示例中,我们将深入探讨如何利用Java IO流与Socket实现简单的文本传输。对于初学者来说,理解这两个概念及其交互是非常关键的。 ...
在提供的链接中,你可能会找到关于这些概念的源代码实现,这将有助于深入理解Java IO流的工作原理和用法。通过学习和分析这些源代码,你可以更好地掌握Java的输入输出机制,并能更有效地处理各种IO操作。
#### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于处理数据的输入与输出。流(Stream)可以理解为一组有序的、有起点和终点的字节集合,它是数据传输的一种...
在Java中,IO流的概念首次被引入是为了方便数据在不同源和目的地之间流动,它将各种I/O操作抽象为流的形式。本章节将深入探讨Java IO流的基本原理、分类以及常用类。 首先,让我们了解什么是流。在计算机科学中,...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...
Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。在Java中,流被形象地比喻为数据传输的通道,数据可以从一个源头(如文件、...
### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...
本文将深入探讨Java IO流的基本概念、类型以及它们在实际开发中的应用。 首先,理解IO流的基本概念至关重要。IO流可以分为两大部分:输入流(Input Stream)和输出流(Output Stream)。它们分别用于从源获取数据和...
Java IO流是Java平台核心特性之一,它负责在程序与外部资源之间传输数据。这个概念在Java编程中至关重要,因为它提供了处理输入(读取)和输出(写入)的机制,无论是从键盘、文件、网络还是其他数据源。在本文中,...
本文将深入探讨Java IO流的基本概念、分类以及常见使用场景。 首先,我们要明白,Java中的流分为字节流和字符流两大类。字节流处理的是8位的字节,而字符流处理的是16位的Unicode字符。字节流又分为输入流...
本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理的是Unicode编码的字符,而字节流则...
Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...