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!
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!
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.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!
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.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.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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: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.
nel ciclo for avevo scritto
array1[i+1]=array2[i], ma mi da errore nell'i+1..
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) { } }}
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!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.
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.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()???![]()
<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>
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>