|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
[JAVA] gestire il contenuto di un .txt
ciao
allora, per un progetto devo salvare dei record composti da tot voci in un file txt ovviamente per riconoscere un record da un altro o un campo da un altro userò un contatore intero nel primo caso e delle stringhe nel secondo, almeno credo quali classi di java mi consigliate di usare? qualcosa che permetta di lavorare su un txt e di fare operazioni con il suo contenuto, magari che sia anche abbastanza potente da permettermi di scandire il file, leggere cercare insomma....qualcosa di adatto... grazie! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 557
|
e se serializzi il contenuto dei record?? e poi salvi? la serializzazione consente di salvare su un file un "oggetto" java con i suoi metodi e le variabili (non static o transient)...
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
Quote:
non so cosa sia cmq il file txt deve contenere solo testo di questo genere (si tratta del sofware per la gestione di un distributore di CD musicali) Record 1 Autore: xxx Titolo: dgsud Casa Discografica: dvusdgfla Anno: 1234 Record 2 Autore: xxx Titolo: dgsud Casa Discografica: dvusdgfla Anno: 1234 e ovviamente aandrà modificato a seconda dei CD disponibili con vari metodi addCD, removeCD ecc ecc |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Spagna
Messaggi: 557
|
se vuoi lasciare tutto in chiaro, per scrivere il file ti consiglio un PrintWriter che col metodo println("stringa") ti permette di scrivere una riga di testo ed andare a capo.
per rileggere poi il file usa un BufferedReader che col metodo String readLine() legge una riga di testo alla volta e la restituisce chiramente entrambi sono nel package java.io |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
abbiamo scoperto ora che la prof ha deto una classe scritta da lei GestioneFile....sembra buona ma non so se ha tutto quello che ci serve.....
se non va bene guarderò quella che mi hai detto grazie mille |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
se hai voglia di fare le cose in maniera piu' elegante prevedi di salvare in XML le informazioni su file. Il tuo SW guadagnerà in flessibilità
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
Quote:
uhm.....mi pare troppo...sul progetto c'è scritto che il file deve essere chiamato input.txt non so se xml si faccia su un txt ma questo deve essere semplicemente un file di testo nromale.... |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
se il tuo progetto non lo richiede lascia perdere, ma in futuro tieni conto che quando hai la necessità di salvare dei dati in formato non binario garantendo che siano trattabili con tool e linguaggi di programmazione differenti XML puo' essere una soluzione. |
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
Cmq non c'è bisogno di dichiarare uno schema oppure una dtd è meglio.
questo codice che ti scrivo crea un file xml è semplice da adattare al tuo caso se vuoi. per provarlo devi avere settato... set CLASSPATH=%CLASSTPATH%;c:\javaxml\lib\xerces.jar;c:\javaxml\lib\jdom.jar; se ti mancano i jar me lo dici che te li mando import java.io.*; import java.util.*; /* IMPORTIAMO I PACKAGE NECESSARI PER LAVORATE CON GLI XML /**/ import org.jdom.*; import org.jdom.output.XMLOutputter; public class CreaXML { public CreaXML(String nomeFile) { try { writeFile(nomeFile); }catch(Exception e) { System.err.println ("errore: "+e); } } public void writeFile(String path) throws Exception { File fileTmp = new File(path); /* ISTANZIAMO UN OGGETTO Element PASSANDOGLI LA STRINGA CHE SARA' IL NOME DEL NOSTRO SUPERTAG /**/ Element root = new Element("root"); /* ISTANZIAMO UN OGGETTO Document PASSANDOGLI COME PARAMETRO L'OGGETTO ELEMENT PRECEDENTEMENTE ISTANZIATO /**/ Document documento = new Document(root); /* AGGIUNGIAMO AL NOSTRO ELEMENT UN ATTRIBUTO: <root attributo=valore> /**/ root = root.setAttribute( "attributo","valore"); /* ISTANZIAMO ALTRI OGGETTI Element PASSANDOGLI LE STRINGHE CHE SARANNO I NOMI DEI NOSTRI TAG /**/ Element form = new Element("form"); Element nome = new Element("nome"); Element titolo = new Element("titolo"); Element copyright = new Element("copyright"); Element autore = new Element("autore"); Element fonte = new Element("fonte"); Element note = new Element("note"); //Element tagsito = new Element("tagsito"); Element body = new Element("body"); Element titolo_body = new Element("titolo_body"); Element sommario = new Element("sommario"); Element testo = new Element("testo"); Element img = new Element("img"); /* ASSEGNAMO DEI VALORI AI TAG param-name E param-value: <param-name>mio nome</param-name> /**/ nome.addContent("nome valore form"); titolo.addContent("titolo valore form"); copyright.addContent("copyright valore form"); autore.addContent("autore valore form"); fonte.addContent("fonte valore form"); note.addContent("note valore form"); // tagsito.addContent("tagsito valore sito"); titolo_body.addContent("titolo_body valore body"); sommario.addContent("sommario valore body"); testo.addContent("testo valore body"); img.addContent("img valore body"); /* AGGIUNGIAMO I TAG param-name E Param-value AL TAG init-param /**/ form.addContent(nome); form.addContent(titolo); form.addContent(copyright); form.addContent(autore); form.addContent(fonte); form.addContent(note); body.addContent(titolo_body); body.addContent(sommario); body.addContent(testo); body.addContent(img); /* AGGIUNGIAMO IL TAG init-param AL SUPERTAG root /**/ root.addContent(form); root.addContent(body); BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter(path)); /* ISTANZIAMO LA CLASSE XMLOutputter CHE CI PERMETTE DI FORMATTARE IL FILE XML. /**/ XMLOutputter xout = new XMLOutputter(); xout.setIndent(true); xout.setNewlines(true); /* CON QUESTA ISTRUZIONE SCRIVIAMO IL DOCUMENTO documento IN UN BufferedWriter CHE CREA IL FILE TRAMITE UN FileWriter /**/ xout.output(documento,out); }catch (IOException e) { System.err.println ("errore: "+e); }finally { try { out.close(); }catch(IOException e) { System.err.println ("errore: "+e); } } } public static void main(String args[]) { CreaXML crea = new CreaXML(args[0]); } }
__________________
Il portale delle infomazioni di Latina e Provincia Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina http://www.giralatina.it Il Blog dei Pendolari http://www.giralatina.it/blog/mybloggie/index.php |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
spiegati
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
puo utilizzare questa base di codice per riempire il contenuto dei tag con il rusultato del record.
esempio <prova>$valore primo campo</prova> in modo tale che alla fine lui avra un xml e non un file di testo. Questo se vuole ascoltare il tuo suggerimento
__________________
Il portale delle infomazioni di Latina e Provincia Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina http://www.giralatina.it Il Blog dei Pendolari http://www.giralatina.it/blog/mybloggie/index.php |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
La soluzione dell'XML è la migliore, ma sicuramente non quella che è richiesta a loro..
Il mio consiglio è di leggere il contenuto del file in una Stringa, e trattarla poi con i 2000 metodi messi a disposizione dalla classe String. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
dipende sempre dall'utilizzo del file xml.
se l'ho si usa in una maniere furba da grossi vantaggi. 1) possiamo far comunicare + appicazioni con la stessa base dati 2) possiamo utilizzare xsl per trasformarlo in cio che vogliamo diversificare il tipo di output. Per chi vuole, incominciare a vedere qualcosa gli suggeriusco di vedere cocoon che è un web-aplication di apache.
__________________
Il portale delle infomazioni di Latina e Provincia Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina http://www.giralatina.it Il Blog dei Pendolari http://www.giralatina.it/blog/mybloggie/index.php |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3532
|
ok ragazzi non ho usato XML anche perchè in questo progetto non bisogna usare niente, bisogna solo usare un txt come "database"
vorrei sapere una cosa: per scrivere nel file stiamo usando java.io.RandomAccessFile questa classe non ha metodi per cancellare. come faccio a cancellare una riga?dovrei cancellarla e fare in modo da shiftare in su tutto quello che c'è sotto in modo da non lasciare righe vuote in quanto una riga vuota viene identificata come fineFile. se non ci sono modi per farlo con questa classe mi consigliate qualche latra classe in grado di farlo? (abbiamo pensato che potremmo tenere tutto memorizzato in un file di appoggio o una lista, e leggendolo ricopiare sul file tutto quello che ci serve tranne la riga da cancellare ma non mi sembra il top del top.... )
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:29.











)








