From 9c632725afb73bbf0966e52ca50c6d66c12d853b Mon Sep 17 00:00:00 2001 From: Szymon Szukalski Date: Tue, 2 Oct 2012 21:11:19 +1000 Subject: Re-wrote AsynchronousFileReader. Various clean-ups. --- src/main/java/io/skas/melbjvm/nio2/FileReader.java | 76 ---------------------- 1 file changed, 76 deletions(-) delete mode 100644 src/main/java/io/skas/melbjvm/nio2/FileReader.java (limited to 'src/main/java/io/skas/melbjvm/nio2/FileReader.java') diff --git a/src/main/java/io/skas/melbjvm/nio2/FileReader.java b/src/main/java/io/skas/melbjvm/nio2/FileReader.java deleted file mode 100644 index 56882ec..0000000 --- a/src/main/java/io/skas/melbjvm/nio2/FileReader.java +++ /dev/null @@ -1,76 +0,0 @@ -package io.skas.melbjvm.nio2; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.channels.AsynchronousFileChannel; -import java.nio.channels.CompletionHandler; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; - -/** - * @author Szymon Szukalski [szymon.szukalski@portlandrisk.com] - */ -public class FileReader implements CompletionHandler { - - public static final Logger LOG = LoggerFactory.getLogger(FileReader.class); - - private Long fileSize; - private Path path; - private ByteBuffer buffer; - private AsynchronousFileChannel asynchronousFileChannel; - - public FileReader(Path path) { - this.fileSize = 0L; - this.path = path; - this.buffer = ByteBuffer.allocate(1048576); - LOG.info("reading {}...", path); - - this.openChannel(); - this.readChannel(0); - } - - private void openChannel() { - try { - this.asynchronousFileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void readChannel(long position) { - asynchronousFileChannel.read(buffer, position, buffer, this); - } - - private void closeChannel() { - try { - this.asynchronousFileChannel.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void completed(Integer result, ByteBuffer attachment) { - if (result != -1) { - this.fileSize += result; - attachment.flip(); - attachment.clear(); - this.readChannel(this.fileSize); - } else { - - LOG.info("... read in: {} bytes from {}", fileSize, path); - attachment.flip(); - attachment.clear(); - this.closeChannel(); - } - } - - @Override - public void failed(Throwable exc, ByteBuffer attachment) { - LOG.error("read failed: {}", exc.getMessage()); - exc.printStackTrace(); - } -} -- cgit v1.2.3