Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1

    Operare sui File con java

    Ciao a tutti!!!
    Col libro di java che mi ritrovo (che fa un po' schifo) non riesco a capire come si fa a prendere il contenuto di un file di testo "A" e ad inserirlo in un punto ben preciso di un secondo file di testo "B"

    Spero che qualcuno di vio possa aiutarmi!!!
    Io purtroppo non sono pratico nel maneggiare i file quindi spero riuscirò a capire quello che mi dite...

    Se avete un pezzo di codice già scritto che compie tale operazione potete mandarmelo a
    Swalke@inwind.it

    Grazie mille davvero!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Cosa significa un punto ben preciso di B?
    Non puoi aprire un file e scriverci nel mezzo, al massimo puoi caricare in memoria il contenuto del file B fino al punto indicato, caricare in memoria tutto A e poi il rimanente di B.
    Alla fine salvi tutto su un file (eventualmente lo stesso B).

    E' questo quello che vuoi ottenere? Se si, come specifichi il punto in cui inserire A?
    Ciao,
    Lorenzo

  3. #3
    E' esattamente quello che voglio fare!!!

    Il punto in cui inserire A in B è sempre lo stesso quindi come dici tu basterebbe mettere in memoria la prima parte di B, poi tutto A e poi la parte restante di B...
    Ma non so come si fa!!!!!!!

    Anche perchè la "parte restante di B" (quella da mettere dopo il contenuto di A) non è sempre della stessa lunghezza!!!

    Spero che ora sia + chiaro quale è il problema...

    ...e spero che qualcuno sappia aiutarmi...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Ok, ho capito il problema, pero' mi dovresti dire come fai a determinare il punto in cui inserire l'altro file:
    conti le linee gia' passate?
    conti i byte gia' letti?
    oppure fai un controllo su un carattere (o su una parola, insomma, ci siamo capiti ) e inserisci il file dopo che il controllo ha avuto successo?

    Ultima cosa, se i file sono grandi, forse converrebbe appoggiarsi ad un file temporaneo, per evitare di utilizzare troppa memoria.

    Abbozzo un esempio:
    codice:
    //Creo due oggetti che leggono dai due file A e B
    BufferedReader inA = new BufferedReader(new FileReader("a.txt"));
    BufferedReader inB = new BufferedReader(new FileReader("b.txt"));
    //File temporaneo in cui salvare i dati
    File tmp = new File("c.tmp");
    PrintWriter out = new PrintWriter(new FileWriter(tmp), true);
    //Leggo i dati dai file riga per riga
    String buffer = inB.readLine();
    //Leggo i dati da B fino a che raggiungo il punto in cui fermarmi
    //ogni riga che leggo, la salvo in un file a parte
    while(!check()) {
      out.println(buffer);
      buffer = inB.readLine();
    }
    //memorizzo anche l'ultima riga (quella che ha il controllo positivo)
    out.println(buffer);
    //ora leggo e memorizzo il file A fino alla fine
    buffer = inA.readLine();
    while(buffer != NULL) {
      out.println(buffer);
      buffer = inA.readLine();
    }
    //Memorizzo anche l'ultima parte di B, lunga a piacere
    buffer = inB.readLine();
    while(buffer != NULL) {
      out.println(buffer);
      buffer = inB.readLine();
    }
    Questa e' una possibile bozza, i commenti spero siano sufficienti.
    Il metodo check() e' un metodo che devi implementare tu per stabilire se hai raggiunto il punto in cui inserire il file A.
    Alla fine del mio codice (che comunque e' incompleto) hai 3 file A, B, e tmp che contiene il risultato.
    Potresti cancellare B e sostituirlo con tmp, e il gioco e' fatto.
    Ciao,
    Lorenzo

  5. #5
    Grazie mille per il tuo preziosissimo aiuto!!!

    Per determinare il punto faccio un controllo sui byte (leggendo il libro mi sembra di aver capito come fare anche se ho ancora delle perplessità).

    Ora provo a usare l'esempio che mi hai dato e vedo se riesco a cavarmela!!!

    Se ho ancora problemi mi faccio risentire!!!

    Grazie mille ancora!!!

  6. #6
    Perchè non usi il RANDOM ACCESS FILE??
    Ti permette di leggere un determinato pezzo di un file e di memorizzartelo in un array di byte e poi di scrivere un determinato array di byte in un determinato pezzo del file .
    I metodi sono :

    read(byte[] b, int off, int len) ;
    write(byte[] b, int off, int len) ;

    dove nel metodo read byte[] b è l'array che devi passare e che sarà rimepito con i byte corrispondenti, off è da dove vuoi cominciare a leggere/scrivere e len è quanti byte vuoi leggere.
    CIauz
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    E' una classe che non ho mai usato, ma se si comporta in quel modo vale la pena di darci un' occhiata, potrebbe fare al caso suo
    Ciao,
    Lorenzo

  8. #8
    Si risparmierebbe un bel pò di linee di codice

    Cosa fa di preciso questo metodo???

    codice:
    private native int readBytes(byte b[], int off, int len) throws IOException;
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Deve essere l'effettiva implementazione del metodo readBytes, dipendente dalla piattaforma.
    Ciao,
    Lorenzo

  10. #10
    Ah ok
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

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.