Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    118

    [JAVA] Lettura/ scrittura file

    Lo so, in questo periodo sono un pò piu' rompiscatole, ma mi servirebbe sapere come faccio a leggere da un file delle info. Piu' che altro mi serve sapere come è possibile leggere magari una riga specifica, o una riga che contenga una parola specifica., e la stessa cosa in scrittura.

    Grazie a tutti


    Edit: se mi dite pure quali sono le classi specifiche a questo compito mi fate un grosso favore.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Che io sappia non è possibile leggere una specifica riga o scrivere in una specifica riga. Le API di Java consentono la lettura e la scrittura dei file di testo in modo sequenziale (come la maggior parte dei linguaggi fa).
    Se si tratta di un file organizzato Random (con record), allora dovrebbe essere possibile posizionare il puntatore nel blocco record desiderato, ma con i file testuali credo non sia proprio possibile.
    In ogni caso, le API di Java per la manipolazione dei file sono nel package java.io e, alcune di esse, le più usate, sono le seguenti:

    Per l'INPUT: FileInputStream, DataInputStream, BufferedReader, ObjectInputStream
    Per l'OUTPUT: FileOutputStream, DataOutputStream, PrintStream, ObjectOutputStream

    Per maggiori informazioni puoi dare un'occhio alla documentazione; questo è il link per il package java.io: http://java.sun.com/j2se/1.4.2/docs/...e-summary.html

    Ciao.
    "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
    Jan 2004
    Messaggi
    118
    codice:
    public String leggi() throws IOException {
    			File file = new File("config" + File.separatorChar+ "file.txt");
    			FileInputStream leggi = new FileInputStream(file);
    			byte[] letto = new byte[(int)file.length()];
    			leggi.skip(473);
    			leggi.read(letto);
    			String letti = new String(letto);
    			leggi.close();
    			return letti;
    			
    	}
    Grz mille, ho scritto questo codice e funziona, e effetivamente legge il contenuto del file di testo che metto in una JTextArea. Ora ho un altra domanda, con il metodo skip (mi serve per forza) riesco a saltare un determinato numero di byte però da come return una serie di quadratini che oltre a essere molto fastidiosi nn so come eliminare. ho provato con
    letti.replaceAll("[]", ""); solo che li ho scritto due parentesi quadre, perchè nn trovo il simbolo del quadratino neanche con il codice ascii. Ho cercato una tabella ma nada. E la cosa fastidosa è che ne scrive tanti quanti sono i byte saltati, e come vedi ne ho saltati 473 e sono moooolto brutti a vedere. Se qualcuno sa qualche altro metodo per saltare una determinata porzione di file (che è dall'inizio fino a 473) oppure mi dice come si fa quel maledetto quadratino. io proprio non lo so

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Una soluzione semplice semplice consiste di leggere comunque tutto il file e, quando è ora di visualizzare i dati letti, falciare i byte che non interessano:
    codice:
    public String leggi() throws IOException {
       File file = new File("config" + File.separatorChar+ "file.txt");
       FileInputStream leggi = new FileInputStream(file);
       byte[] letto = new byte[(int)file.length()];
       leggi.read(letto);
       byte utili = new byte[letto.length - 473];
       for (int i=473; i<letto.length; i++) utili[i-473] = letto[i];
       String letti = new String(utili);
       leggi.close();
       return letti;
    			
    }
    Ciao.
    "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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    118
    Grazie mille lele, ma ho risolto in un altro modo, in pratica lo skip lo faccio prima e (usando FileReader) faccio così

    codice:
    leggi.skip(473);
    char[] letto = new char [(int)serverlist.length() - 473];
    leggi.read(letto);
    String letti = new String(letto);
    leggi.close();
    return letti;
    così tutto funziona.
    Ciao Ciao

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Certo... anche così funziona!

    Ciao.
    "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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.