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

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页