关于fileoutputstream和fileinputstream的一个问题

这是一个比较简单的读取文件然后把文件复制到另一个地方的代码,我想问的是
fos和fis的相交点就是一个len,为什么fos可以获取到fis里面的内容呢?有buf做缓存我还懂,因为fos和fis共用那个buf,可是下面没有涉及到缓存啊?谢谢大家能够解答我的问题
// 打开输入流,输出流
FileInputStream fis = new FileInputStream(srcPath);
FileOutputStream fos = new FileOutputStream(destPath);

    // 读取和写入信息
    int len = 0;
    while ((len = fis.read()) != -1) {
        fos.write(len);//这里不懂
    }

    // 关闭流
    fis.close();
    fos.close();

同意问答机器人的看法 双手赞