public static void main(String[] args) throws Exception { File input = new File("/tmp/test.log"); SequentialFileInputStream f = new SequentialFileInputStream(input, false); PrintStream out = new PrintStream(new FileOutputStream(new File( input.getAbsolutePath() + "-complete"))); byte[] buf = new byte[1024]; int read = 0; int written = 0; do { if (f.available() > 0) buf = new byte[Math.min(1024, f.available())]; read = f.read(buf); if (read >= 0) { written += read; out.write(buf, 0, read); out.flush(); } log.debug("{} bytes written", written); } while (read > 0); } }