A java class to get a compressed file from the server
Some guys often ask me to help them to get some files from the server, such as tomcat log. Everytime I must open ftp client to connect the server, download these file. The lazy man need a smart way to do this job. Now they can help themselves.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ZGet {
public void get(HttpServletRequest request, HttpServletResponse response, String filename) {
try {
// String fname = request.getParameter("xpath");
fname = filename;
File f = new File(fname);
if (f.canRead()) {
response.setContentType("application/x-gzip");
response.setHeader("Location", f.getName());
response.setHeader("Content-Disposition", "attachment; filename=" + f.getName() + ".gz");
get(new FileInputStream(filename), response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
private void get(InputStream in, OutputStream out) throws IOException {
if (in == null || out == null) {
return;
}
byte[] buffer = new byte[1024];
int i = -1;
GZIPOutputStream gzip = new GZIPOutputStream(out);
while ((i = in.read(buffer)) != -1) {
gzip.write(buffer, 0, i);
}
gzip.close();
}
}





Discussion