Java erbjuder inte ett snyggt och ganska one-liner för att kopiera filer . Men Javas fil input - output ( I /O ) klasser gör det ganska lätt att skriva egna funktioner filkopiering . Kom igång genom att skriva funktionaliteten filkopiering som skriptlet-koden direkt i din Java ServerPages ( JSP ) sida . Instruktioner
Grunderna och Catch klausul
1
Import Java-klasser som du behöver för att läsa och skriva filer med sidan direktivet i JSP-sida :
< % @ sida import = " java.io. * " % >
2
Skapa ett try- catch-block i JSP-sidan för att hantera IOException :
< % try { } catch ( IOException ex ) { } % >
3
Handtag IOException fel inne i fångsten klausul som behövs för JSP-sidan för att misslyckas graciöst . Skriv undantag meddelandet i bländande färger i JSP-sidan genom att bryta sig ur den skriptlet kod :
catch ( IOException ex ) { % > < strong style = " color : red ; background- color : gold ; " > < % = ex.getMessage ( ) % > < /strong > < % } Addera try-blocket
4
Öppna källfilen ( filen du vill kopiera ) och målfilen ( där kopian kommer att skrivas till ) inne i try - blocket . SrcFileName och dstFileName är strängvariabler innehåller sökvägen och filnamnet för varje fil :
File srcFile = new File ( srcFileName ) , File dstFile = new File ( dstFileName ) ,
5
Kontrollera att källfilen finns och kasta en IOException om det inte :
om ( srcFile.exists ( ) ) { kasta nytt IOException ( " No källfil : " + srcFileName ) ; }
6
Kontrollera att målfilen existerar och är skrivbar . Kasta en IOException om det inte är :
om ( dstFile.exists () ) {if { kasta nytt IOException ( " Destination skrivskyddad : " + dstFileName ) ( dstFile.canWrite ( !)) ; } } else { kasta nytt IOException ( " Destination ej skapat : " + dstFileName ) ; }
7
Öppen källkod och destination strömmar file :
FileInputStream srcStrm = ny FileInputStream ( srcFile ) ; FileOutputStream dstStrm = ny FileOutputStream ( dstFile ) ,
8
Skapa en byte array för att hålla data:
byte [ ] BUF = new byte [ 4096 ] ;
9
Läs från källan strömmen och skriva till destinationen strömmen i en while-slinga som fortsätter tills alla data har lästs från källfilen :
int len , medan ( (LEN = srcStrm.read ( buf ) ) > 0 ) { dstStrm.write ( buf , 0 , len ) ; }
10
avsluta ärendet strömmar :
srcStrm.close ( ) ; dstStrm . stäng ( ) ;