Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457

    Lettura con un inputReader

    salve ragazzi mi dite se riesco a leggere corretamente un array di byte?

    codice:
    int m_input = 9096;
    				int len;
    				InputStream resourceInputStream =new ByteArrayInputStream(file1.getContents());
                    InputStream istream = new BufferedInputStream(resourceInputStream);
    
    				byte[] buffer = new byte[m_input];
    				 while (true) {
    	                    try {
    	                        len = istream.read(buffer);
    	                        if (len == -1) {
    	                            break;
    	                        }
    	                        AllFile.add(buffer);
    	                    } catch (IOException e) {
    	                        len = -1;
    	                        break;
    	                    }
    	                }
    				
    				// fine 
    				
       				/*	Destination.setContents(file1.getContents());
    								cmsObj.lockResource(sitePath);
    								  cmsObj.writeFile(Destination);
    								cmsObj.unlockResource(sitePath);*/
    				
    			}
    Man mano che leggo il file di byte(file1.getbyte) devo iserire ogni riga di byte in un arraylist....è corretto il codice? Perche non mi legge tutto il file, ma solo una parte


    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Lettura con un inputReader

    Originariamente inviato da Mitele
    salve ragazzi mi dite se riesco a leggere corretamente un array di byte?
    Innanzitutto l'uso di BufferedInputStream sarebbe del tutto superfluo. Nel tuo ciclo stai già leggendo "a blocchi", non c'è altro di meglio che si possa fare e una bufferizzazione "di sotto" non migliorerebbe nulla (semmai sarebbe solo uno strato in più per cui passare).
    E d'altronde la risorsa "finale" è un ByteArrayInputStream che ha già tutto in memoria.

    Poi in genere il ciclo di lettura si fa (tipicamente) con una struttura diversa. E devi anche tenere presente una cosa. Tu leggi a blocchi di 9096 byte per volta. Se la dimensione del contenuto è di lunghezza multipla di 9096 byte, ad ogni lettura avresti il buffer sempre completamente pieno.
    Ma non è detto che sia così! L'ultimo "chunk" (pezzetto) potrebbe essere di lunghezza inferiore, quindi l'ultima lettura riempirebbe solo parzialmente il buffer che verso la fine avrebbe "spazzatura" (ciò che è rimasto dalla lettura precedente). Ma tu con quel AllFile.add(buffer) usi sempre il buffer al completo. Ed è sbagliato.
    Detto in altre parole, devi usare la lunghezza restituita da read per sapere quanto usare del buffer.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    Grazie del consiglio sto già apportando le modifiche, ma il poblema sostanziale è che il carattere " me lo trasforma in un carattere sporco del tipo ? colorato in neretto....
    potresti dirmi come evitare tale sporcatura ? Te ne sarei davvero molto grato

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    qualcuno sa come far leggere correttamente i seguenti caratteri?

    “prato” e di “pascolo”


    Io ho provato ma me li trasforma in ��Sprato��� e di ��Spascolo���

    che devo fare???

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Mitele
    qualcuno sa come far leggere correttamente i seguenti caratteri?

    “prato” e di “pascolo”


    Io ho provato ma me li trasforma in ��Sprato��� e di ��Spascolo���

    che devo fare???
    La questione è solo sapere con quale "charset" (set di caratteri) è stato scritto il contenuto e dove poi lo visualizzi (console? componente grafico Java? pagina web e sì quale charset è dichiarato?)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    verrà visualizzato in internet explorer, ma se io apro il file già trovo quei maledetti caratteri strani..che debbo fare?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    Questo è l'algoritmo

    codice:
    try {
    			     
    			 CmsFile Destination=cmsObj.readFile(destinazione);
    			 ArrayList<byte[]> AllFile= new ArrayList<byte[]>();
    			 AllFile.add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>".getBytes("UTF-8"));
    			 AllFile.add("\n<ROOT>".getBytes("UTF-8"));
    			 for (CmsResource file : lista) {
    			
    				CmsFile file1=cmsObj.readFile(file); 
    				String sitePath= cmsObj.getSitePath(file );	
    				String xml = new String(file1.getContents());
    				// nuovo codice 
    				int m_input = 2048;
    				int len;
    				InputStream resourceInputStream =new ByteArrayInputStream(file1.getContents());
    				Reader reader = new InputStreamReader(resourceInputStream);
    				char[] buffer = new char[m_input];
    				
                    //InputStream istream = new BufferedInputStream(resourceInputStream);
    
    				//byte[] buffer = new byte[m_input];
    				 while (true) {
    	                    try {
    	                        len = reader.read(buffer);
    	                        if (len == -1) {
    	                            break;
    	                        }
    	                        byte[] buffer1 = new byte[len];
    	                        for(int i=0;i<len;i++){
    	                        	if(buffer[i]=='”' || buffer[i]=='“'  ){
    	                        		buffer1[i]=(byte)'”';
    	                        	}
    	                        	buffer1[i]=(byte)buffer[i];
    	                        }
    	                        
    	                        
    	                        
    	                        AllFile.add(buffer1);
    	                    } catch (IOException e) {
    	                        len = -1;
    	                        break;
    	                    }
    	                }
    				
    				// fine
    Che devo impostare? Sto ad impazzire...

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Mitele
    verrà visualizzato in internet explorer, ma se io apro il file già trovo quei maledetti caratteri strani..che debbo fare?
    "apro il file" ... con quale editor? Anche questo centra.

    La sequenza di caratteri contenuta in quei file che leggi è stata codificata in byte secondo un certo charset, dovresti sapere quale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    io apro il file da Opencms e già trovo quei maledetti caratteri..pero' anche quando leggo ilo file (sono andato in debug) noto la presenza di certi caratteri strani ....che posso fare?

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457
    hai idea di cosa possa essere?

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.