package com.frostwire.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class ProgressFileEntity {
private final File file;
private final String contentType;
private ProgressFileEntityListener _listener;
public ProgressFileEntity(File file) {
this.file = file;
this.contentType = "binary/octet-stream";
}
public String getContentType() {
return contentType;
}
public ProgressFileEntityListener getProgressFileEntityListener() {
return _listener;
}
public void setProgressFileEntityListener(ProgressFileEntityListener listener) {
_listener = listener;
}
public void writeTo(OutputStream outstream) throws IOException {
if (outstream == null) {
throw new IllegalArgumentException("Output stream may not be null");
}
InputStream instream = new FileInputStream(this.file);
try {
byte[] tmp = new byte[4096];
int l;
while ((l = instream.read(tmp)) != -1) {
outstream.write(tmp, 0, l);
fireOnWrite(l);
if (_listener != null && !_listener.isRunning()) {
break;
}
}
outstream.flush();
} finally {
instream.close();
}
}
protected void fireOnWrite(int written) {
if (_listener != null) {
_listener.onWrite(this, written);
}
}
public interface ProgressFileEntityListener {
public void onWrite(ProgressFileEntity progressFileEntity, int written);
public boolean isRunning();
}
}