1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.dishevelled.compress;
25
26 import static com.google.common.base.Preconditions.checkNotNull;
27
28 import static org.dishevelled.compress.Compress.isBgzfFile;
29 import static org.dishevelled.compress.Compress.isBgzfInputStream;
30 import static org.dishevelled.compress.Compress.isBzip2File;
31 import static org.dishevelled.compress.Compress.isGzipFile;
32
33 import java.io.BufferedInputStream;
34 import java.io.BufferedReader;
35 import java.io.File;
36 import java.io.FileInputStream;
37 import java.io.FileReader;
38 import java.io.InputStream;
39 import java.io.InputStreamReader;
40 import java.io.IOException;
41
42 import javax.annotation.Nullable;
43
44 import htsjdk.samtools.util.BlockCompressedInputStream;
45
46 import org.apache.commons.compress.compressors.CompressorException;
47 import org.apache.commons.compress.compressors.CompressorStreamFactory;
48
49 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
50
51 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
52
53
54
55
56
57
58 public final class Readers
59 {
60
61
62
63
64 private Readers()
65 {
66
67 }
68
69
70
71
72
73
74
75
76
77
78 public static BufferedReader inputStreamReader(final InputStream inputStream) throws IOException
79 {
80 checkNotNull(inputStream);
81 return new BufferedReader(new InputStreamReader(inputStream));
82 }
83
84
85
86
87
88
89
90
91
92
93 public static BufferedReader compressedFileReader(final File file) throws IOException
94 {
95 checkNotNull(file);
96 return compressedInputStreamReader(new FileInputStream(file));
97 }
98
99
100
101
102
103
104
105
106
107
108 public static BufferedReader compressedInputStreamReader(final InputStream inputStream) throws IOException
109 {
110 checkNotNull(inputStream);
111 BufferedInputStream bufferedInputStream = inputStream instanceof BufferedInputStream ? (BufferedInputStream) inputStream : new BufferedInputStream(inputStream);
112 try
113 {
114 if (isBgzfInputStream(bufferedInputStream))
115 {
116 return bgzfInputStreamReader(bufferedInputStream);
117 }
118 return new BufferedReader(new InputStreamReader(new CompressorStreamFactory().createCompressorInputStream(bufferedInputStream)));
119 }
120 catch (CompressorException e)
121 {
122
123 return inputStreamReader(bufferedInputStream);
124 }
125 }
126
127
128
129
130
131
132
133
134
135 public static BufferedReader bgzfFileReader(final File file) throws IOException
136 {
137 checkNotNull(file);
138 return new BufferedReader(new InputStreamReader(new BlockCompressedInputStream(file)));
139 }
140
141
142
143
144
145
146
147
148
149 public static BufferedReader bgzfInputStreamReader(final InputStream inputStream) throws IOException
150 {
151 checkNotNull(inputStream);
152 return new BufferedReader(new InputStreamReader(new BlockCompressedInputStream(inputStream)));
153 }
154
155
156
157
158
159
160
161
162
163 public static BufferedReader gzipFileReader(final File file) throws IOException
164 {
165 checkNotNull(file);
166 return gzipInputStreamReader(new FileInputStream(file));
167 }
168
169
170
171
172
173
174
175
176 public static BufferedReader gzipInputStreamReader(final InputStream inputStream) throws IOException
177 {
178 checkNotNull(inputStream);
179 return new BufferedReader(new InputStreamReader(new GzipCompressorInputStream(inputStream)));
180 }
181
182
183
184
185
186
187
188
189
190 public static BufferedReader bzip2FileReader(final File file) throws IOException
191 {
192 checkNotNull(file);
193 return bzip2InputStreamReader(new FileInputStream(file));
194 }
195
196
197
198
199
200
201
202
203 public static BufferedReader bzip2InputStreamReader(final InputStream inputStream) throws IOException
204 {
205 checkNotNull(inputStream);
206 return new BufferedReader(new InputStreamReader(new BZip2CompressorInputStream(inputStream)));
207 }
208
209
210
211
212
213
214
215
216
217
218 public static BufferedReader reader(@Nullable final File file) throws IOException
219 {
220 if (file == null)
221 {
222 return compressedInputStreamReader(System.in);
223 }
224 else if (isBgzfFile(file))
225 {
226 return bgzfFileReader(file);
227 }
228 else if (isGzipFile(file))
229 {
230 return gzipFileReader(file);
231 }
232 else if (isBzip2File(file))
233 {
234 return bzip2FileReader(file);
235 }
236 return new BufferedReader(new FileReader(file));
237 }
238 }