java多线程管道通讯_编写一个利用管道流,实现线程之间的通信,实现文件传输功能Java程序...

展开全部

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PipedInputStream;

import java.io.PipedOutputStream;

import java.io.PrintWriter;

public class Day10A {

private BufferedReader br;// 字符效率读取流32313133353236313431303231363533e58685e5aeb931333431353932

private BufferedWriter bw;// 字符效率写出流

private PipedInputStream pis;// 管道读取流

private PipedOutputStream pos;// 管道输出流,

private byte[] readBytes;// 读取缓冲区

private byte[] writeBytes;// 写出缓冲区

private String path = "C:\\Users\\Administrator\\Desktop";

private File file = null;

private FileOutputStream fos = null;

Day10A() {

writeBytes = new byte[1024];

file = new File(path, "测试.txt");

try {

if (!file.exists()) {

file.createNewFile();

fos = new FileOutputStream(file);

} else {

fos = new FileOutputStream(file, true);

}

br = new BufferedReader(new InputStreamReader(System.in));

bw = new BufferedWriter(new PrintWriter(fos));

pis = new PipedInputStream();

pos = new PipedOutputStream();

pis.connect(pos);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Day10A d = new Day10A();

d.readFunction();

d.writerFunction();

}

private void readFunction() {

new Thread(new Runnable() {

public void run() {

while (true) {

try {

for (String str = br.readLine();!str.contentEquals("over"); str = br.readLine()) {

readBytes = str.getBytes();

pos.write(readBytes);

}

} catch (Exception e) {

}

break;

}

try {

pos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}).start();

}

private void writerFunction() {

new Thread(new Runnable() {

@Override

public void run() {

try {

String str = "";

for (int len = pis.read(writeBytes); len != -1; len = pis.read(writeBytes)) {

str = new String(writeBytes, 0, len);

bw.write(str + "\r\n");

bw.flush();

}

} catch (Exception e) {

}

}

}).start();

}

}

28225a3cda81201091358ada5c981119.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值