summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/filetransfer/FileReadBytestream.java')
-rw-r--r--src/com/isode/stroke/filetransfer/FileReadBytestream.java58
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