@Test public void read() throws Exception { String source = "C:\\Users\\Administrator\\Desktop\\167.png"; String destination = "C:\\Users\\Administrator\\Desktop\\ssss.jpg"; int bufferSize = 4096; // 设置缓冲区大小 byte buffer[] = new byte[bufferSize]; // 缓冲区字节数组 File sourceFile = new File(source); InputStream fis = new FileInputStream(sourceFile); BufferedInputStream bis = new BufferedInputStream(fis, bufferSize); OutputStream fos = new FileOutputStream(destination); BufferedOutputStream bos = new BufferedOutputStream(fos, bufferSize); long fileSize = sourceFile.length(); // 文件总字节数 int haveRead = 0; // 已读取字节数 int readSize = -1; // 记录每次实际读取字节数 while (null != bis && (readSize = bis.read(buffer)) != -1) { haveRead += readSize; System.out.println(new String(buffer)); bos.write(buffer, 0, readSize); System.out.println("已经复制: " + haveRead + " Byte 完成" + haveRead * 100 / fileSize + "% 单次读取:" + readSize + " Byte"); } bos.flush(); bos.close(); bis.close(); System.out.println("复制完成: " + haveRead); }