java中输入输出的总括(初学必看)(五)

文章作者 100test 发表时间 2007:03:14 16:51:10
来源 100Test.Com百考试题网


第五节 字节流的高级应用
. 管道流
管道用来把一个程序、线程和代码块的输出连接到另一个程序、线程和代码块的输入。java.io中提供了类PipedInputStream和PipedOutputStream作为管道的输入/输出流
管道输入流作为一个通信管道的接收端,管道输出流则作为发送端。管道流必须是输入输出并用,即在使用管道前,两者必须进行连接
管道输入/输出流可以用两种方式进行连接:
– 在构造方法中进行连接
•. PipedInputStream(PipedOutputStream pos).
•. PipedOutputStream(PipedInputStream pis).
– 通过各自的connect()方法连接
•. 在类PipedInputStream中,connect(PipedOutputStream pos);

•. 在类PipedOutputStream中,connect(PipedInputStream pis);
例 8.8 管道流。
本例例管道流的使用方法。设输入管道in与输出管道out已连接,Send线程向输出管道out发送数据,Receive线程从输入管道in中接收数据。程序如下:
import java.io.*.
public class Pipedstream
{
public static void main (String args[])
{
PipedInputStream in = new PipedInputStream().
PipedOutputStream out = new PipedOutputStream().
try
{
in.connect(out).
}
catch(IOException ioe) { }
Send s1 = new Send(out,1).
Send s2 = new Send(out,2).
Receive r1 = new Receive(in).
Receive r2 = new Receive(in).
s1.start().
s2.start().
r1.start().
r2.start().
}
}
class Send extends Thread //发送线程
{
PipedOutputStream out.
static int count=0. //记录线程个数
int k=0.
public Send(PipedOutputStream out,int k)
{
this.out= out.
this.k= k.
this.count . //线程个数加1
}
public void run( )
{
System.out.print("\r\nSend" this.k ": " this.getName() " ").
int i=k.
try
{
while (i<10)
{
out.write(i).
i =2.
sleep(1).
}
if (Send.count==1) //只剩一个线程时
{
out.close(). //关闭输入管道流
System.out.println(" out closed!").
}
else
this.count--. //线程个数减1
}
catch(InterruptedException e) { }
catch(IOException e) { }
}
}
class Receive extends Thread //接收线程
{
PipedInputStream in.
public Receive(PipedInputStream in)
{
this.in = in.
}
public void run( )
{
System.out.print("\r\nReceive: " this.getName() " ").
try
{
int i = in.read().
while (i!=-1) //输入流未结束时
{
System.out.print(i " ").
i = in.read().
sleep(1).
}
in.close(). //关闭输入管道流
}
catch(InterruptedException e) { }
catch(IOException e)
{
System.out.println(e).
}
}
}
程序运行结果如下:
Send1: Thread-0
Send2: Thread-1
Receive: Thread-2 1
Receive: Thread-3 2 3 4 5 7 out closed!
6 8 9 java.io.IOException: Pipe closed!
. 数据流
DataInputStream和DataOutputStream
. 在提供了字节流的读写手段的同时,
. 以统一的通用的形式向输入流中写入boolean,int,long,double等基本数据类型,并可以在次把基本数据类型的值读取回来。
. 提供了字符串读写的手段。
. 分别实现了DataInput和DataOutput接口
声明类:
Public class DataInputStream extends filterInputStream implements DataInput
例 8.9 数据流。
本例演示数据流的使用方法。
程序如下:
import java.io.*.
public class Datastream
{
public static void main(String arg[])
{
String fname = "student1.dat".
new Student1("Wang").save(fname).
new Student1("Li").save(fname).
Student1.display(fname).
}
}
class Student1
{
static int count=0.
int number=1.
String name.
Student1(String n1)
{
this.count . //编号自动加1
this.number = this.count.
this.name = n1.
}

相关文章


安装配置:zip版本Tomcat配置新手入门
新手入门解析配置文件的文件问题
java中输入输出的总括(初学必看)(五)
Resin的使用和安装
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛