使用 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);