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 p>
{
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)
{