Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo escribir un programa JAVA que pueda implementar funciones de archivo

Cómo escribir un programa JAVA que pueda implementar funciones de archivo

Java implementa la descarga de archivos

1. Utilice el método RequestDispatcher

1. Agregue

lt al archivo web.xml. -mappinggt;

lt;extensiongt;doclt;/extensiongt;

lt;mime-typegt;application/vnd.ms-wordlt;/mime-typegt;

lt;/mime-mappinggt;

2. El programa es el siguiente:

lt;@page language="java" import="java.net.*" pageEncoding ="gb2312 "gt;

lt;

response.setContentType("application/x-download"); //Configurar para descargar la aplicación/x-download

String filenamedownload = "/System Solution.doc"; //La ruta relativa del archivo a descargar

String filenamedisplay = "System Solution.doc" //El nombre de guardado del archivo que se muestra al descargar; el archivo

p>

filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8"

respuesta.addHeader("Content-Disposition", "adjunto; nombre de archivo); =" filenamedisplay);

intente

{

RequestDispatcher despachador = application.getRequestDispatcher(filenamedownload);

if(dispatcher != nulo)

{

despachador.forward(solicitud, respuesta

}

respuesta.flushBuffer(); >

}

catch(Excepción e)

{

e.printStackTrace();

}

finalmente

{

}

gt;

2. Descargar usando la salida de flujo de archivos

1. En el archivo web.xml Agregado

lt;mime-mappinggt;

lt;extensiongt;doclt;/extensiongt;

lt;mime-typegt ;application/vnd.ms-wordlt ;/mime-typegt;

lt;/mime-mappinggt;

2. El procedimiento es el siguiente:

lt; @page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"gt;

lt;

//Acerca del uso de la salida de flujo de archivos al descargar archivos:

//Agregue Response.reset() y no incluya todo %gt después, incluido el último; one;

//Porque el servidor de aplicaciones generalmente genera el contenido entre %gt; y lt;% tal como está cuando se procesa el jsp compilado, y el valor predeterminado es PrintWriter,

//Pero tienes que realizar una salida de flujo: ServletOutputStream. Esto es equivalente a intentar usar dos mecanismos de salida en Servlet.

//Sucederá: getOutputStream() ya ha sido llamado para esta respuesta.

// Para más detalles, consulte la segunda parte del libro "Más Java Pitfill" Elemento 33 de la capa web: Intentar utilizar dos mecanismos de salida en Servlet 270

//Y si hay líneas saltos, lo cual no es un problema para archivos de texto, pero sí para otros formatos, como AutoCAD, Word, Excel y otros archivos

//Habrá algunos saltos de línea adicionales 0x0d y 0 en el archivo descargado, lo que may Como resultado, los archivos en algunos formatos no se pueden abrir, pero algunos se pueden abrir normalmente.

respuesta.reset(); //Se puede agregar o no agregar

respuesta.setContentType("application/x-download"); //Configurar para descargar la aplicación/x- descargar

// /../../ Retroceda dos niveles hasta WEB-INF/classes y vaya al directorio raíz de la aplicación. Tenga en cuenta que las rutas obtenidas en la siguiente oración son diferentes entre Tomcat. y WebLogic No hay / al final de la ruta en WebLogic

System.out.println(this.getClass().getClassLoader().getResource("/").getPath()).

String filenamedownload = this.getClass() .getClassLoader().getResource("/").getPath() "/../../System Solution.doc";

String filenamedisplay = "System Solution.doc"; // System solucion.txt

filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8"); ("Content-Disposition", "adjunto; filename=" filenamedisplay);

OutputStream salida = null;

FileInputStream fis = null;

intentar

{

salida = respuesta.getOutputStream();

fis = nuevo FileInputStream(archivodescargar);

byte[] b = nuevo byte [1024];

int i = 0;

while((i = fis.read(b)) gt; 0)

{

salida.write(b, 0, i

}

salida.flush()

}

catch(Exception e)

{

System.out.println("¡Error!"

e.printStackTrace();

}

finalmente

{

if(fis != null)

{