Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    146

    Problemi con questo codice java

    Ho scritto questo programma java per verificare alcune operazioni di io.
    Esso legge un file char per char e lo riscrive char per char.
    Se leggo e scrivo file di testo nessun problema ma se riscrivo file exe o immagini ci sono diverse differenze tra diversi caratteri tra il file sorgente e il file su cui scrivo.
    Perchè??
    Qualcuno può darmi una mano???
    Ecco il codice:
    codice:
    package chartochar;
    
    import java.io.*;
    
    public class Main {
    
        public static void main(String[] args) {
            FileReader
                    fr;
            FileWriter
                    fw;
            int
                    c;
            try {
                fr = new FileReader("m1.jpg");
                fw = new FileWriter("m2.jpg");
                while((c = fr.read()) != -1)
                    fw.write(c);
            }
            catch(Exception e) {
              System.out.println("Errore");
          }
        }
    }
    In allegato c'è quello che risulta in m2 mentre m1 non è altro che l'immagine di windows vista chiamata: "Oryx Antelope.jpg"

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Il codice va sempre postato all'interno dei tag [code] e [/code] (ho già modificato io).

    Per quanto riguarda le operazioni con file binari non è corretto l'utilizzo di variabili di tipo char o il tipo di dato int (anche se read() restituisce esattamente u int), ma va utilizzato il tipo di dato byte.

    Un byte occupa 8 bit, mentre un int ne occupa ben 32...

    Seconda cosa: i file vanno sempre chiusi, quando si finisce di utilizzarli, questo più per correttezza formale, che pratica.

    Altra cosa: la documentazione specifica che la classe FileReader è una classe adatta alla lettura di file di testo (character-files), non certo per file di tipo binario, dove è più opportuno utilizzare FileInputStream o DataInputStream.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    146

    Ok

    Ti ringrazio per le dritte sono state molto utili.
    E scusa per i tag riguardanti il codice, il fatto è che io sono nuovo(appena iscritto) e questo era la mia prima discussione al forum.
    Ringrazio ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.