使用 Runnable Thread 读取文件和 PipeInputStream
Using Runnable Thread to read file and PipeInputStream
我正在努力完成一项原本微不足道的家庭作业。但是,因为它可能非常简单 - 我没有看到解决方案。这是代码。
final Path sourceFilePath = Paths.get(args[0]);
final Path sinkFilePath = Paths.get(args[1]);
final PipedInputStream pipeInput = new PipedInputStream(10000000);
final PipedOutputStream pipeOut = new PipedOutputStream(pipeInput);
final Runnable fileInTransporter = () -> {
try {
//TODO one command that reads from the file, and writes into pipe
pipeOut.write(0);
} catch (final Exception e) {
e.printStackTrace();
} finally {
//TODO close related pipe
pipeOut.close();
}
};
final Runnable fileOutTransporter = () -> {
try {
//TODO one command reads from pipe, and writes into file
pipeInput.read();
} catch (final Exception e) {
e.printStackTrace();
} finally {
//TODO close related pipe
pipeInput.close();
}
};
new Thread(fileInTransporter, "source-transporter-thread").start();
new Thread(fileOutTransporter, "sink-transporter-thread").start();
}
我想我对使用的 Runnable interface/lamba 实现感到很困惑。另外,我认为文件,sourceFilePath 是不是 read/written 进入了 pipedOutputStream?我需要以某种方式将文件读入管道?
我认为管道设置正确。我似乎只是无法将文件读入其中?
提前致谢。
我想通了。
我使用了以下代码:
Files.copy(sourceFilePath, PipeOut);
在第一个Runnable
然后,在第二个可运行线程中,我使用了
Files.copy(PipeInput, sinkFilePath);
我正在努力完成一项原本微不足道的家庭作业。但是,因为它可能非常简单 - 我没有看到解决方案。这是代码。
final Path sourceFilePath = Paths.get(args[0]);
final Path sinkFilePath = Paths.get(args[1]);
final PipedInputStream pipeInput = new PipedInputStream(10000000);
final PipedOutputStream pipeOut = new PipedOutputStream(pipeInput);
final Runnable fileInTransporter = () -> {
try {
//TODO one command that reads from the file, and writes into pipe
pipeOut.write(0);
} catch (final Exception e) {
e.printStackTrace();
} finally {
//TODO close related pipe
pipeOut.close();
}
};
final Runnable fileOutTransporter = () -> {
try {
//TODO one command reads from pipe, and writes into file
pipeInput.read();
} catch (final Exception e) {
e.printStackTrace();
} finally {
//TODO close related pipe
pipeInput.close();
}
};
new Thread(fileInTransporter, "source-transporter-thread").start();
new Thread(fileOutTransporter, "sink-transporter-thread").start();
}
我想我对使用的 Runnable interface/lamba 实现感到很困惑。另外,我认为文件,sourceFilePath 是不是 read/written 进入了 pipedOutputStream?我需要以某种方式将文件读入管道?
我认为管道设置正确。我似乎只是无法将文件读入其中?
提前致谢。
我想通了。 我使用了以下代码:
Files.copy(sourceFilePath, PipeOut);
在第一个Runnable
然后,在第二个可运行线程中,我使用了
Files.copy(PipeInput, sinkFilePath);