|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Mar 2004
Messaggi: 6
|
Copiare il contenuto di un file
Devo copiare il contenuto di un file in una altro file SENZA copiare l'intero file.
Mi spiego meglio: ho il file esempio.exe, voglio aprirlo, leggerne il contenuto, e scriverlo nel file esempio2.exe. Io ho provato con questo codice: import java.io.*; public class Copy { public static void main(String[] args) throws IOException { File inputFile = new File("sizer.exe"); File outputFile = new File("sizer2.exe"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); } } Ma quando vado ad aprire il nuovo file mi dice che non trova l'ingresso di qualcosa... insomma, non funziona, da lo stesso errore che si ottiene se aprendo un file exe con il blocco note, copiando il contenuto,lo incollandolo su un'altra finestra e salvando il tutto con nomefile.exePenso che l'errore si adovuto al fatto che copiio il contenuto in modalità testoe mi chiedo quindi come copiare il contenuto in "maniera efficace".Qualcuno mi saprebbe aiutare?Wako Kid
__________________
Wakko Kid |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
anche se non so java voglio solo sapere che ti serve leggere un file eseguibile. Alla fine te devi fare una copia del file
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Per leggere un file eseguibile devi aprirlo non come file di testo (che è quello che succede con la classe FileReader) ma come file binario, utilizzando FileInputStrem e FileOutputStream. Nell'esempio che ti riporto attacco agli stream di input e di output anche degli stream bufferizati per ottimizzare le operazioni di scrittura/lettura; inoltre il contenuto del file non lo leggo carattere per carattere, o meglio byte per byte, ma leggo 500 KBytes alla volta con l'istruzione read che legge dal file riempiendo il vettore buffer; il metodo read restituisce anche il numero di bytes letti: quando questo è zero interrompo la lettura scrittura e chiudo gli stream:
Codice:
import java.io.*; public class Copy { public static void main(String[] args) throws IOException { File inputFile = new File("sizer.exe"); File outputFile = new File("sizer2.exe"); InputStream finput = new BufferedInputStream(new FileInputStream(inputFile)); OutputStream foutput = new BufferedOutputStream( new FileOutputStream(outputFile)); byte[] buffer = new byte[1024 * 500]; int bytes_letti = 0; while((bytes_letti = finput.read(buffer)) > 0) foutput.write(buffer, 0, bytes_letti); finput.close(); foutput.close(); } }
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:20.