Java 困扰三周の问题:使用byte[]或skip()方法读取字节流Stream文件尾部多/少/缺字节解决方法
前言 最近在造一个最强兼容性的FTP服务端轮子,但在使用InputStream、OutputStream及它的子类时,我遇到了很奇怪也很严重的问题:数据尾部随机缺少/多出数据。这个问题简直太致命了。 问题复现 先出一段代码,我之前操作数据流的步骤如下(请注意看注释): // 获取文件输出流FileOutputStream和网络输入流InputStream FileOutputStream fileOutputStream = new FileOutputStream(file); InputStream inputStream = socket.getInputStream(); // 新建一个字节数组 byte[] bytes = new byte[8192]; // 从网络输入流inputStream,读取字节并写入到字节数组byte[] bytes while ((inputStream.read(bytes)) != -1) { // 写入到本地文件中 fileOutputStream.write(bytes); } // 以防万一,刷新一下缓存 fileOutputStrea....