Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Caratteri "strani" in una stringa usata come buffer

    Ciao a tutti!

    Sto realizzando un client FTP in java e il codice è questo:

    FtpClient fcMyFtp = new FtpClient();
    byte buffer[] = new byte[1000];
    int len;
    TelnetInputStream tis = fcMyFtp.get("testo.txt");
    String txt="";
    while( (len = tis.read(buffer)) != -1 ) {
    txt=txt+(new String(buffer));
    }

    In pratica leggo da un file di testo posto su uno spazio ftp a tocchi di 1000 byte. Questo file contiene semplicemente un numero seriale di un numero non fisso di cifre (ma non più di 20).
    La stringa txt, al termine del codice, risulta lunga 1000 caratteri ed è formata dallo stesso codice seriale più caratteri, che vengono rappresentati come spazi (" "), ma ad un'analisi più attenta risultano con codice ascii 0, ovvero nul. Che caratteri sono?

    A causa di questi caratteri non posso trasformare la stringa in un intero, poichè non ne conosco la lunghezza.
    Prima di effettuare l'analisi dei caratteri, pensando fossero spazi, avevo provato il trim() ed il replace(str1,str2) senza successo, per eliminarli.

    Come posso togliere dalla stringa i caratteri che non fanno parte del seriale?

    Grazie dell'aiuto!
    Saverio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    56
    Allora, ... le classi che usi sono quelle del package sun.net.
    Il metodo get() di TelnetInputStream restituisce un int, che rappresenta il numero di caratteri letti (-1 se lo stream è finito).
    Un'ulteriore indicazione: per costruire stringhe per concatenazione in un ciclo (probabilmente nel tuo caso non è molto importante visto che leggi tutto in un solo ciclo), usa StringBuffer e non String: gli oggetti di tipo String sono inalterabili e ne viene costruito uno nuovo ad ogni concatenazione, con decadimento di prestazioni:

    codice:
    FtpClient fcMyFtp = new FtpClient();
    byte buffer[] = new byte[1000];
    int len;
    TelnetInputStream tis = fcMyFtp.get("testo.txt");
    StringBuffer txt= new StringBuffer();
    while((len = tis.read(buffer)) != -1 ) {
         txt.append(new String(buffer, 0, len));
    }
    String seriale = txt.toString();

  3. #3
    Grazie davvero!
    Mi sei stato molto d'aiuto!

    Saverio

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.