创世神曲java倒闭了_javaIO基础 - 倒闭坑人走世界的个人空间 - OSCHINA - 中文开源技术交流社区...

流是什么

简单的说:流是字节从源到目的地运行的轨迹。

次序是有意义的,字节会按照次序进行传递。

在java.io包中,有一些流是结点流,即它们可以从一个特定的地方读写。

列如磁盘或者一块内存。其它流称作过滤器。一个过滤器输入流是用一个到已存在的输入流的连接创建的。此后,当你试图从过滤输入流对象读时,他向你提供来自另一个输入对象的字符

IO包中的基本流类

在java.io包中定义了一些流类。下图表明了包中的类层次。一些更公共的类将在后面介绍。

IO包中基本流类

InputStream:

1.SequenceInputStream 顺序

2.PipedInputStream管道(必须掌握)

3.FilterInputStream过滤器(必须掌握)

1.DataInputStream

2.PushbackInputStream回推

3.BufferedInputStream缓存(必须掌握)

4.ObjectInputStream(必须掌握)

5.ByteArrayStream字节数组(必须掌握)

6.FileInputStream

FileInputStream和FileOutputStream

这些类是结点流,而且正如这个名字所暗示的那样,他们使用磁盘文件。

这些类的构造函数允许你所指定他们所连接的文件。要构造一个FileInputStream,所关联的文件必须存在而且是可读的,

如果你要构造一个FileOutputStream而输出文件已经存在,则他将被覆盖

BufferInputStream和BufferOutputStream

这些是过滤器流,他们可以提高i/o操作的效率

DataInputStream和DataOutputStream

DataInputStream方法

byte readByte

long readLong

double readDouble

DataOutputStream方法

void writeByte(byte)

void writeLong(long)

void writeDouble(double)

注意DataInputStream和DataOutputStream的方法是成对的

这些流都有读写字符串的方法,但不应当使用这些方法,他们已经被后面所讨论的读者和作者所去取代

PipedInputStream和PipedOutputStream

管道流用来在线程进行通信。一个线程的PipedInputStream对象从另一个线程的PipedOutStream对象

读取输入。用使管道流有用,必须有一个输入方和一个输出方

SequenceInputStream:允许你连接多个InputStream流,简单示例如下:

public static void mian(String args[]) throws Exception{

InputStream in1 = new FileInputStream("D:/temp/a.txt");

InputStream in2 = new FileInputStream("D:/temp/b.txt");

SequenceInputStream sin = new SequenceInputStream(in1,in2);

int c = 0;

while((c=sin.read())!=-1){

System.out.print((char) c);

}

in1.close();

in2.close();

sin.close();

}

InputStream方法

三个read方法

int read()

int read(byte [])

int read(byte[],int,int)

这三个方法提供对输入管道数据的存取。简单读方法返回一个ini值,他包含从流李

读出一个字节或者-1,其中后者表明文件结束。其它两种方法将数据读入到字节数组中,并返回所读的字节数。

第三个方法中的两个int参数指定了所要填入的数组的子范围

void close()

你完成流操作之后,就关闭这个流,如果你有一个流所组成的栈,使用过滤器流,

就关闭栈顶部的流。这个关机操作会关闭其余的流。

OutputStream方法

三个基本的write()方法

void write(int)

void write(byte [])

void write(byte [],int, int)

这些方法写输出流,和输入一样,总是尝试以实际最大的块进行写操作。

void close()

当你完成写操作后,就关闭输出流。如果你有一个流所组成的栈,就关闭栈顶部的流。

这个关闭操作会关闭其余的流。

void flush()

有时一个输出流在积累了若干次之后才进行真的的写操作。flush()方法允许你的强制执行写操作。

IO流编程的基本模型

1.构建源和目的地的连接

2.从源输出流

3.目的地接受流

4,关闭连接

例子:

package com;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public class FileIO {

public void writeFile(){

String str = "this \n is a \n test";

try {

FileOutputStream out = new FileOutputStream("d:/temp/a.txt");

out.write(str.getBytes());

out.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 读文件

*/

public void readFile(){

try {

FileInputStream in = new FileInputStream("d:/temp/a.txt");

byte bs[] = new byte[100];

in.read(bs);

System.out.println("file content="+new String(bs));

in.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

FileIO io = new FileIO();

//io.readFile();

io.writeFile();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值