Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180

    [Java]Scrivere all'inizio di un file di testo

    Salve ragazzi, ho bisogno di inserire una stringa all'inizio di un file di testo già esistente, senza sovrascrivere il resto, ma shiftandolo una riga più in basso. Avete qualche esempio da mostrarmi?? Grazie!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java]Scrivere all'inizio di un file di testo

    Originariamente inviato da deb463is
    ho bisogno di inserire una stringa all'inizio di un file di testo già esistente, senza sovrascrivere il resto, ma shiftandolo una riga più in basso. Avete qualche esempio da mostrarmi?? Grazie!
    Non è possibile "shiftare" nulla .... non si può inserire fisicamente qualcosa in mezzo al file pensando/sperando che il resto si sposti in avanti!! In generale si può solo a) sovrascrivere dati già esistenti b) aggiungere dati al fondo del file.

    Se vuoi inserire fisicamente qualcosa all'inizio/in mezzo al file devi riscrivere tutto il file e gli approcci sono diversi:
    a) Leggi da un file e contemporaneamente scrivi su un nuovo file poi alla fine cancelli il vecchio file e rinomini il nuovo con l'altro nome.
    b) Leggi tutto il file mettendolo in memoria, quindi poi scrivi tutto, con le aggiunte, sullo stesso file.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Io stavo pensando ad una cosa che funzioni con due array di stringhe. Sul primo viene caricato il file, sul secondo, in prima posizione copio la stringa che mi interessa, array[0]="ciao"; e poi tramite ciclo for ci aggiungo le altre righe. Ovviamente la dimensione del secondi array deve essere maggiorata di 1 rispetto a quella del primo.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da deb463is
    Io stavo pensando ad una cosa che funzioni con due array di stringhe. Sul primo viene caricato il file, sul secondo, in prima posizione copio la stringa che mi interessa, array[0]="ciao"; e poi tramite ciclo for ci aggiungo le altre righe. Ovviamente la dimensione del secondi array deve essere maggiorata di 1 rispetto a quella del primo.
    Il secondo array in teoria non servirebbe. Carichi tutte le righe del file in un array in memoria e chiudi il file. Quindi lo apri in scrittura, scrivi la nuova riga di inizio, quindi tutto il contenuto dell'array.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Originariamente inviato da andbin
    Il secondo array in teoria non servirebbe. Carichi tutte le righe del file in un array in memoria e chiudi il file. Quindi lo apri in scrittura, scrivi la nuova riga di inizio, quindi tutto il contenuto dell'array.
    Giustissimo. Sarebbe la migliore cosa. Ho perso le speranze però, perchè non sono pratico di java, il compilatore è alquanto poco intuitivo sugli errori (c'era una graffa in più e mi dava errore nel main). Non sono riuscito a fare una semplice copia da array ad array:

    nel ciclo for avevo scritto
    array1[i+1]=array2[i], ma mi da errore nell'i+1..

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Questo è ciò che sto provando, uso due file, faccio l'append del secondo sul primo che già contiene la prima riga che mi interessa. Funziona,però il risultato è un file senza formattazione. Come posso fare a mantenerla?
    codice:
    import java.io.*;
     
    public class helloworld {
    public static void main(String[] args) throws IOException {
    		try {
    		BufferedWriter out = new BufferedWriter(
    		new FileWriter("C:/1.txt", true));
    		BufferedReader in = new BufferedReader(new FileReader("C:/test.txt"));
    		String str;
    		while ((str = in.readLine()) != null) {
    		out.write("\n"+str);
    		}
    		System.out.println(str);
    		in.close();
    		out.close();
    		 
    		 
    		} catch (IOException e) {
    		} }}

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Nell'out ho tolto \r\n, perchè ho aggiunto direttamente l'invio nel file di testo. Però continuo ad ottenere un file senza formattazione.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da deb463is
    Nell'out ho tolto \r\n, perchè ho aggiunto direttamente l'invio nel file di testo. Però continuo ad ottenere un file senza formattazione.
    Continui a dire "senza formattazione" ma cosa intendi? Che non vedi le righe una sotto l'altra?? Allora vuol dire che la sequenza di newline non è appropriata!

    La sequenza di newline è dipendente dal sistema operativo e salvo casi particolari (non entro ora nei dettagli) generalmente non è una buona cosa mandare in output esplicitamente "\n" o altra sequenza specifica.

    Hai notato che BufferedWriter ha un newLine()???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Originariamente inviato da andbin
    Continui a dire "senza formattazione" ma cosa intendi? Che non vedi le righe una sotto l'altra?? Allora vuol dire che la sequenza di newline non è appropriata!

    La sequenza di newline è dipendente dal sistema operativo e salvo casi particolari (non entro ora nei dettagli) generalmente non è una buona cosa mandare in output esplicitamente "\n" o altra sequenza specifica.

    Hai notato che BufferedWriter ha un newLine()???
    Intendo che mette tutto insieme, senza mantenere la formattazione originale, ed in più dopo <DAINSERIREALLINIZIO> che voglio inserire io, inserisce un quadratino non meglio identificato, e poi il file xml da aggiungere.


    <DAINSERIREALLINIZIO><ListRecords> <record> <header> <identifier>oai:triple-l:2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</identifier> <datestamp>2007-05-29T15:55:00Z</datestamp> <datestampasdatetime>2007-05-29T17:55:00+02:00</datestampasdatetime> </header> <metadata> <lom xsi:schemaLocation="some url"> <general > <identifier> <catalog>oai</catalog> <entry>oai:triple-l:2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</entry> </identifier <title> <langstring> <value>Graduation mw. S. de Caralt</value> <language>en</language> </langstring> </title> <catalogentry> <catalog>nl.wur.wurtv</catalog> <entry> <langstring> <value>2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</value> <language>x-none</language> </langstring> </entry> </catalogentry> <grouplanguage>en</grouplanguage> <description> <langstring> <value>Sponge Culture: Learning from Biology and Ecology</value> <language>en</language> </langstring> </description> </general> <lifecycle xmlns="" /> <metametadata > <metadatascheme>LORENET</metadatascheme> </metametadata> </lom> </metadata> </record> <….More Records here…..!> </ListRecords>

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Questo è quello che vorrei ottenere io, mantenendo la formattazione!

    <DAAGGIUNGEREALLINIZIO>
    <ListRecords>
    <record>
    <header>
    <identifier>oai:triple-l:2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</identifier>
    <datestamp>2007-05-29T15:55:00Z</datestamp>
    <datestampasdatetime>2007-05-29T17:55:00+02:00</datestampasdatetime>
    </header>
    <metadata>
    <lom xsi:schemaLocation="some url">
    <general >
    <identifier>
    <catalog>oai</catalog>
    <entry>oai:triple-l:2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</entry>
    </identifier
    <title>
    <langstring>
    <value>Graduation mw. S. de Caralt</value>
    <language>en</language>
    </langstring>
    </title>
    <catalogentry>
    <catalog>nl.wur.wurtv</catalog>
    <entry>
    <langstring>
    <value>2c7ba037-52a6-4323-97dd-b6ea1cdbfd18</value>
    <language>x-none</language>
    </langstring>
    </entry>
    </catalogentry>
    <grouplanguage>en</grouplanguage>
    <description>
    <langstring>
    <value>Sponge Culture: Learning from Biology and Ecology</value>
    <language>en</language>
    </langstring>
    </description>
    </general>
    <lifecycle xmlns="" />
    <metametadata >
    <metadatascheme>LORENET</metadatascheme>
    </metametadata>
    </lom>
    </metadata>
    </record>
    <….More Records here…..!>
    </ListRecords>

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.