Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
106 lines (92 loc) · 3.06 KB

File metadata and controls

106 lines (92 loc) · 3.06 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
* MinIO Java SDK for Amazon S3 Compatible Cloud Storage, (C) 2017 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.io.IOException;
import java.io.InputStream;
import me.tongfei.progressbar.ProgressBar;
import me.tongfei.progressbar.ProgressBarStyle;
public class ProgressStream extends InputStream {
private InputStream in;
private ProgressBar pb;
/**
* ProgressStream implements an extends InputStream while also writing out the read progress on
* console. ProgressStream can be used as a direct replacement for any InputStream compatible
* input.
*
* @param msg Custom message string.
* @param style Custom progress bar style.
* @param stream InputStream to be wrapped.
* @throws IOException For any exception generated by the InputStream.
*/
public ProgressStream(String msg, ProgressBarStyle style, InputStream stream) throws IOException {
this(msg, style, (long)stream.available(), stream);
}
/**
* ProgressStream implements an extends InputStream while also writing out the read progress on
* console. ProgressStream can be used as a direct replacement for any InputStream compatible
* input.
*
* @param msg Custom message string.
* @param style Custom progress bar style.
* @param size Size of the progress bar.
* @param stream InputStream to be wrapped.
* @throws IOException For any exception generated by the InputStream.
*/
public ProgressStream(String msg, ProgressBarStyle style, long size, InputStream stream)
throws IOException {
super();
// Allocate the reader.
this.in = stream;
// Initialize progress bar.
this.pb = new ProgressBar(msg, size, style);
this.pb.start();
}
@Override
public int available() throws IOException {
return this.in.available();
}
@Override
public void close() throws IOException {
this.pb.stop();
this.in.close();
return;
}
@Override
public int read() throws IOException {
this.pb.step();
return this.in.read();
}
@Override
public int read(byte[] toStore) throws IOException {
int readBytes = this.in.read(toStore);
this.pb.stepBy(readBytes); // Update progress bar.
return readBytes;
}
@Override
public int read(byte[] toStore, int off, int len) throws IOException {
int readBytes = this.in.read(toStore, off, len);
this.pb.stepBy(readBytes);
return readBytes;
}
@Override
public long skip(long n) throws IOException {
this.pb.stepTo(n);
return this.in.skip(n);
}
@Override
public boolean markSupported() {
return false;
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.