package krasa.grepconsole.grep; import com.intellij.openapi.util.io.FileUtil; import com.squareup.tape.QueueFile; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.atomic.AtomicLong; public class Tape { private static final int ITEMS = 5000; public static void main(String[] args) throws IOException, InterruptedException { final QueueFile queueFile = new QueueFile(FileUtil.generateRandomTemporaryPath()); System.out.println("adding"); int i = 0; while (i < ITEMS) { try { queueFile.add((++i + "").getBytes()); } catch (IOException e) { e.printStackTrace(); } } System.out.println("reading"); final AtomicLong atomicLong = new AtomicLong(); read(queueFile, atomicLong); read(queueFile, atomicLong); read(queueFile, atomicLong); read(queueFile, atomicLong); read(queueFile, atomicLong); read(queueFile, atomicLong); read(queueFile, atomicLong); // executorService.shutdownNow(); } protected static void read(final QueueFile queueFile, final AtomicLong atomicLong) throws IOException { queueFile.forEach(new QueueFile.ElementReader() { @Override public void read(InputStream in, int length) throws IOException { byte[] bytes = new byte[length]; in.read(bytes); // System.out.println(new String(bytes)); queueFile.remove(); atomicLong.incrementAndGet(); } }); System.out.println("total read " + atomicLong.get()); } }