diff options
Diffstat (limited to 'src/com/isode/stroke/filetransfer/FileReadBytestream.java')
-rw-r--r-- | src/com/isode/stroke/filetransfer/FileReadBytestream.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/com/isode/stroke/filetransfer/FileReadBytestream.java b/src/com/isode/stroke/filetransfer/FileReadBytestream.java new file mode 100644 index 0000000..d349c17 --- /dev/null +++ b/src/com/isode/stroke/filetransfer/FileReadBytestream.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2010-2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ +/* + * Copyright (c) 2015 Tarun Gupta. + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +package com.isode.stroke.filetransfer; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import com.isode.stroke.base.ByteArray; + +public class FileReadBytestream extends ReadBytestream { + + private String file; + private FileInputStream stream; + + public FileReadBytestream(final String file) { + this.file = file; + this.stream = null; + } + + public ByteArray read(int size) { + try { + if (stream == null) { + stream = new FileInputStream(file); + } + ByteArray result = new ByteArray(); + //assert(stream.good()); + stream.read(result.getData(), 0, size); + onRead.emit(result); + return result; + } + catch (FileNotFoundException e) { + return null; + } + catch (IOException e) { + return null; + } finally { + try { + if(stream != null) stream.close(); + } + catch (IOException e) { + // Needs a catch clause + } + } + } + + public boolean isFinished() { + return stream != null; + } +}
\ No newline at end of file |