2015-05-12 7 views
6

Desidero che il mio programma salvi gli indirizzi URL, uno alla volta, in un file. Questi indirizzi devono essere salvati in formato UTF per assicurarsi che siano corretti.Come aggiungere a DataOutputStream in Java?

Il mio problema è che il file viene sovrascritto tutto il tempo, invece che aggiunto:

DataOutputStream DOS = new DataOutputStream(new FileOutputStream(filen, true)); 
    Count = 0; 
    if (LinkToCheck != null) { 
    System.out.println(System.currentTimeMillis() + " SaveURL_ToRelatedURLS d "+LinkToCheck.Get_SelfRelationValue()+" vs "+Class_Controller.InterestBorder); 
    if (LinkToCheck.Get_SelfRelationValue() > Class_Controller.InterestBorder) { 
     DOS.writeUTF(LinkToCheck.Get_URL().toString() + "\n"); 
     Count++; 
    } 
    } 
    DOS.close(); 

Questo codice non aggiunge, quindi come faccio a farlo accodare?

+0

come viene inizializzato 'filen'? – Dude

+2

Ho testato il tuo codice e sono riuscito ad aggiungere. Forse potresti condividere più informazioni su come lo stai invocando? –

risposta

0

Il problema si è verificato che mi ero dimenticato di inserire "filen.delete();" altrove.

Questo è il motivo per cui (I) dovresti fare delle pause durante la codifica: p

1

In realtà non è necessario mantenere aperto il flusso e scrivere su ogni iterazione. Perché non si crea semplicemente una stringa che contiene tutte le informazioni e la si scrive alla fine?

Esempio:

DataOutputStream DOS = new DataOutputStream(new FileOutputStream(filen, true)); 
int count = 0; // variables should be camelcase btw 
StringBuilder resultBuilder = new StringBuilder(); 
if (LinkToCheck != null) { 
    System.out.println(System.currentTimeMillis() + "SaveURL_ToRelatedURLS d "+LinkToCheck.Get_SelfRelationValue()+" vs "+Class_Controller.InterestBorder); 

    if (LinkToCheck.Get_SelfRelationValue() > Class_Controller.InterestBorder) { 
     resultBuilder.append(LinkToCheck.Get_URL().toString()).append("\n"); 
     count++; 
    } 
} 
DOS.writeUTF(resultBuilder.toString()); 
DOS.close(); 

Speranza che aiuta.

0

È possibile ottenere questo senza DataOutputStream. Ecco un esempio semplificato utilizzando solo il FileOutputStream:

String filen = "C:/testfile.txt"; 
FileOutputStream FOS = new FileOutputStream(filen , true); 
FOS.write(("String" + "\r\n").getBytes("UTF-8")); 
FOS.close(); 

Questo sarà solo scrivere ogni volta "String", ma si dovrebbe ottenere l'idea.

Problemi correlati