Come copiare un file in JSP

March 28

Java non offre un one-liner pulito e abbastanza per copiare file. Tuttavia, file di input-output di Java (I / O) classi rendono abbastanza facile da scrivere il proprio funzionalità di copia dei file. Inizia scrivendo la funzionalità di copia file come codice scriptlet direttamente nella tua pagina Java ServerPages (JSP).

istruzione

Le basi e prendere la clausola

1 Importare le classi Java di cui ha bisogno per la lettura e la scrittura di file utilizzando il direttiva di pagina in pagina JSP:

<% @ Page import = \ "java.io. * \"%>

2 Creare un blocco try-catch nella vostra pagina JSP per gestire IOException:

<%
provare {}
catch (IOException ex) {}
%>

3 Maneggiare IOException errori all'interno della clausola catch come necessario per la pagina JSP a fallire con grazia. Stampa il messaggio di eccezione nei colori evidenti nella pagina JSP rompendo fuori dal codice scriptlet:

catch (IOException ex) {%>
<Strong style = "color: red; background-color: oro; ">
<% = Ex.getMessage ()%>
</ Strong>
<%}

Il blocco try

4 Aprire il file di origine (il file che si desidera copiare) e il file di destinazione (dove la copia verrà scritto) all'interno del try-block. SrcFileName e dstFileName sono variabili stringa contenente il percorso e il nome di ogni file:

File SRCFILE = new File (srcFileName)
ANDARE
File dstFile = new File (dstFileName);

5 Verificare che il file di origine esista, e lanciare una IOException se non lo fa:

if (! srcFile.exists ()) {
throw new IOException (\ "No file sorgente: \" + srcFileName)
ANDARE
}

6 Verificare che il file di destinazione esiste ed è scrivibile. Gettare un IOException se non è:

if (dstFile.exists ()) {
if (! dstFile.canWrite ()) {

throw new IOException(\&quot;Destination read-only: \&quot; + dstFileName)

ANDARE
}
}
altro {
throw new IOException (\ "Destinazione non creato: \" + dstFileName)
ANDARE
}

7 Open source e file di destinazione flussi:

FileInputStream srcStrm = new FileInputStream (SRCFILE)
ANDARE
FileOutputStream dstStrm = new FileOutputStream (dstFile);

8 Creare un array di byte per contenere i dati:

byte [] buf = new byte [4096];

9 Leggere dal flusso di sorgente e scrivere nel flusso di destinazione in un ciclo while che continua fino a quando tutti i dati sono stati letti dal file di origine:

int len
ANDARE
while ((len = srcStrm.read (BUF))> 0) {
dstStrm.write (buf, 0, len)
ANDARE
}

10 Chiudere i flussi di file:

srcStrm.close ()
ANDARE
dstStrm.close ();

Consigli e avvertenze

  • Portarlo al livello successivo, rendendo la funzionalità di copia file di un JavaBean o personalizzato classe tag handler. Creare un tag personalizzato che prende i file di origine e di destinazione come parametri. Questa pratica renderà il vostro metodo di copia dei file riutilizzabile e mantenere la vostra pagina JSP libera di codice scriptlet inutili.
  • Gestire tutte le eccezioni. le eccezioni non gestite possono provocare i visitatori del sito di vedere le pagine di messaggi di errore brutti Java.
  • Ricordate, le pagine JSP sono applicazioni lato server, in modo da l'origine e la destinazione della vostra copia di file si trova sul server web.