blob: 7fa068d1cfafa95ad13d742e53596db8d572c818 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/* Copyright (c) 2016, Isode Limited, London, England.
* All rights reserved.
*
* Acquisition and use of this software and related materials for any
* purpose requires a written license agreement from Isode Limited,
* or a written license from an organisation licensed by Isode Limited
* to grant such a license.
*
*/
package com.isode.stroke.filetransfer;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.isode.stroke.base.ByteArray;
public class FileWriteBytestream extends WriteBytestream {
private final String filePath_;
private FileOutputStream stream_ = null;
public FileWriteBytestream(String filePath) {
filePath_ = filePath;
}
@Override
protected void finalize() throws Throwable {
try {
close();
}
finally {
super.finalize();
}
}
@Override
public boolean write(ByteArray data) {
if (data.isEmpty()) {
return true;
}
if (stream_ == null) {
try {
stream_ = new FileOutputStream(filePath_);
} catch (FileNotFoundException e) {
return false;
}
}
try {
stream_.write(data.getData());
stream_.flush();
} catch (IOException e) {
return false;
}
onWrite.emit(data);
return true;
}
public void close() {
if (stream_ != null) {
try {
stream_.close();
} catch (IOException e) {
// Ignore exception
}
stream_ = null;
}
}
}
|