Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [java] prog che legge txt e aggiorna un db sql

    salve a tutti...
    sono un po imbranato in java ma avrei necessità di creare un piccolo programma che letto un file di questo tipo:
    *************file*******************
    000123 2 20070101
    000228 0 20070115
    005698 4 20070403
    123654 3 20070501
    *************file*******************

    me lo divida in tre variabili... il primo codice di 6 cifre in A il secondo in B e il terzo in C e che di conseguenza mi aggiorni tre campi di un db con questi dati...

    vi prego aiuto!!!

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

    Moderazione

    Java viene trattato nell'apposito sub-forum.
    Poi, posta il codice da te prodotto, indicando dove sono i problemi e cosa non ti riesce.

    Ti sposto su Java.


    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
    import java.io.*;


    public class CopyRead {
    public static void main(String [] args) throws IOException {
    // apre il file in lettura
    FileReader filein = new FileReader("comune_pescia_tia.txt");

    int next;
    int x=0,n=0;
    char codBollettino, numRata, dataPagamento;
    String codB= new String [];
    String numR= new String [];
    String dP= new String [];
    do {
    next = filein.read(); // legge il prossimo carattere
    if (next != -1) // se non e' finito il file
    {
    if (x<5) // legge le prime 5 cifre
    {codBollettino = (char) next;
    codB= codBollettino;
    System.out.print(codB); // stampa il carattere
    x++;
    }
    else
    {
    x=0;
    if (x<1) // legge la prima cifra
    {
    numRata = (char) next;
    System.out.print(numRata); // stampa il carattere
    x++;
    }
    else
    {
    x=0;
    if (x<8) // legge le prime 8 cifre
    {
    dataPagamento = (char) next;
    System.out.print(dataPagamento); // stampa il carattere
    }
    }
    }
    }
    } while (next != -1);

    filein.close(); //chiude il file
    System.out.println();
    }
    }
    allora dopo ogni if vorrei creare una stringa che mi racchiude tutti i caratteri ovvero nella prima cinque nella seconda uno e nell'ultima otto...
    dopo che ho creato queste stringhe mi serve il codice per poter utilizzare queste stringhe per aggiornare dei campi di un DB sql... in postgresql..

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ti conviene leggere una riga alla volta e fare lo split invece che un solo carattere.
    Magari metti i controlli per il formato del file. Tipo:
    codice:
    BufferedReader reader = new BufferedReader(new FileReader("nomeFile.txt"));
    ArrayList codB= new ArrayList();
    ArrayList numR= new ArrayList();
    ArrayList dP= new ArrayList();
    String[] tmp;
    String line = null;
    int i = 0;
    while((line=reader.readLine())!=null) {
       i++;
       tmp = line.split(" ");
       if(tmp.length!=3) 
          throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);
       if(tmp[0].length()!=5) //Pero' nel primo file che hai mandato erano 6
          throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);
       codB.add(tmp[0]);
       if(tmp[1].length()!=1)
          throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);
       numR.add(tmp[1]);
       if(tmp[2].length()!=8)
          throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);
       dP.add(tmp[2])  
    }
    Per la parte di connessione al db, leggiti qualche tutorial (ce ne sono una marea su web) o la pillola in alto in questa sezione del forum. Poi procurati la libreria necessaria e prova.

  5. #5
    grazie mille..

    ma mi potresti postare un codice completo che nn riesco a compilarlo??

    non sono molto pratico di java..

  6. #6
    e poi il file che devo leggere è stato cambiato... non è più separato dagli spazi, ma in questo modo...

    *****file*****
    86210220070212
    83560420061109
    72400420070212
    39948120060819
    39585020061014
    39506020070202
    *****file*****
    dove devo dividere in tre stringhe ogni riga, la prima di 5 caratteri, la seconda di 1 e l'ultima di 8...


    e successivamente ogni stringa mi aggiornerà un campo del database....

    grazie ancora e scusate il cambiamento!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Il codice di prima era corretto, andava solo inserito all'interno di un metodo di una qualsiasi classe.
    codice:
    import java.io.*;
    import java.util.*;
    
    public class CopyRead {
       public static void main(String [] args) throws IOException {
          BufferedReader reader = new BufferedReader(new FileReader("nomeFile.txt"));
          ArrayList codB= new ArrayList();
          ArrayList numR= new ArrayList();
          ArrayList dP= new ArrayList();
          String line = null;
          int i = 0;
          while((line=reader.readLine())!=null) {
             i++;
             if(line.length()!=14) 
                throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);
                codB.add(line.substring(0,5));
                numR.add(line.substring(5,6));
                dP.add(line.substring(6));  
          }
          //Test
          for(int i=0; i<codB.size; i++) 
             System.out.println(i+") "+codB.get(i)+" "+numR.get(i)+" "+dP.get(i));
         //Al posto di queste linee di test ci va la parte di update del database
    }

  8. #8
    grazie mille..
    ma l'ultimo codice che mi hai inserito mi da un errore alla linea

    --> throws new DataFormatException("Formato file non valido alla linea "+i+": "+line);

    mi dice : illegal start of expression

    come risolvo...

    grazie di nuovo!

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    si scusa. Ho fatto copia e incolla senza guardare. Ci vorrebbe throw e non throws, ma visto che e' un main stampa direttamente un messaggio d'errore e fai un return.
    if(line.length()!=14) {
    System.out.println("Formato file non valido alla linea "+i+": "+line);
    return;
    }

  10. #10
    ok al posto del throw ho messo il codice che mi hai postato..

    ma adesso sull'ultima parentesi mi dice

    --> reached end of file while parsing

    che vuol dire???

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.