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).
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>
<%}
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(\"Destination read-only: \" + 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 ();