Este artigo compartilhou exemplos de arquivos compactados Java e imagens baixadas para sua referência. O conteúdo específico é o seguinte
Página principal Index.xml
<%@ Page Language = "Java" import = "java.util. src = "Images/1.jpg"/> <!-Caminho relativo-> <br/> <!-Caminho absoluto-> <a href = "/helloweb/gzip"> página de compressão de conteúdo demonstração de compressão-gzip </a> <br/> <br/> <a href = "Down> Download </a> <br/> <br/>
Arquivo compactado: gzipServlet.java
Somente quando o arquivo compactado é grande o suficiente, a sobrecarga de compressão pode ser deslocada e a compactação é efetivamente compactada. Caso contrário, o tamanho do arquivo após a compactação de um arquivo muito pequeno será maior.
pacote cn.hncu.servlet; importar java.io.byteArrayoutputStream; importar java.io.ioException; importar java.io.outputStream; importar java.util.zip.gzipoutStream; importação javax.servlet.servlet.sertleTexception; importação javax. javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class GzipServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String Str = "Vuttyjhgyurchunan changsha Surdivsfanhui wuhu 890-80897 Talvez mais VAr acostumado a este TVSDUVGKJXHVNXZC.NLKCJSDFPEIFNIUQ4EY8F048EYUYLI" +"skchkxhckxzncnxclkjhasliduhasduisuugdlisgdlkjadhlksjhdlkasjdhasklhdlkjsahashdkskdjhkdjshkldsjhfkljd" // byte src [] = sst.bybysjkldsjhkljd "; Não existe ISO-8859-1 byte src [] = str.getBytes ("utf-8"); // Os dados enviados ao navegador em segundo plano não são reconhecidos pelo navegador-precisam fazer o download, e são iluminados para abri-lo com texto. Portanto, você precisa definir o protocolo byteArrayOutputStream BUT = new ByteArrayOutputStream (); // fluxo de memória gzipOutputStream Gout = new GzipOutputStream (lubrificação); GOUT.WRITE (SRC); // Pressione src para que você faça um byte de cache flash = bout.tobytearray (); // src ==> dest // resumo: ao gerar dados comprimidos, você precisa definir o cabeçalho de resposta resp.setheader ("Content-Soding" " // Depois de definir o cabeçalho da resposta, você não precisa baixá-lo e não distorceu resp.setContentType ("text/html; charset = utf-8"); // certifique-se de definir str.getbyte para codificar // quando o arquivo é muito pequeno: a compressão não tem efeito, os filmes de sertomos (não são mais pequenos. System.out.println ("Comprimento antes da compactação:"+src.length); System.out.println ("Comprimento após compressão:"+dest.Length); // deslize os dados compactados para destactstream out out.write (dest); }}Faça o download da imagem: OnServlet .Java (a imagem está no diretório SRC)
pacote cn.hncu.servlet; importar java.io.ioexception; importar java.io.inputStream; importar java.io.outputStream; importar java.net.urlencoder; import Javax.Servlet.Servlet.Servlet.leTexception; importação javax.Servlet.httlet.httlet.httlet.Httlet.Httlet.Servlet.ServletPexe; javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletRequest; import javax.servlet.http.httpServletResponse; classe pública de dobre o htpslettlert {@Override ServiceSonse; resp) lança servletexception, ioexception {// Protocol Set 1 resp.setContentType ("Application/Force-download"); // Use o aplicativo que baixa o arquivo por padrão para baixar string filename = "4.jpg"; // Se o nome do arquivo for chinês-como: my Picture.jpg //filename=urlencoder.encode(FileName ,"utf-8") ;//encode FileName. Se não for codificado, o nome do arquivo exibido no navegador será contundido.InputStream em = donServlet.class.getClassLoader (). GetResourceasStream (nome do arquivo); // Configuração do protocolo 2 resp.setheader ("Content-Disposition", "Affix; nome do arquivo =/'"+nome do arquivo+"/'"); // Diga ao navegador o nome do arquivo baixado atual //downservlet.class/hellowbweb/ )cat/n )cllslet/n )cll.clat/hellowbwebwebret/n )cllslet/ )clset/n )cllslet/hellebweb/) // A localização atual da figura: "d: /apache-tomcat-7.0.30/webapps/helloweb/web-inf/classes" // fileInputStream fin = new FileInputStream (nome do arquivo); // impossível outputStream Out = resp.getOutstream (); byte buf [] = novo byte [512]; int len = 0; // while (len = fin.read (buf))! =-1) {// out.write (buf, 0, len); //} while ((len = in.read (buf))! =-1) {out.write (buf, 0, len); }}} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.