2016-11-24 1 views
0
BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true)); 
bw.append(System.lineSeparator()); 
bw.append("Text after writing")); 

Le code ci-dessus entraînera ci-dessous:ligne de séparation de BufferedWriter devient séparateur double ligne

Text already in file before writing 

Text after writing 

Sans System.lineSeparator(), il deviendra:

Text already in file before writingText after writing 

Ce que je veux est :

Text already in file before writing 
Text after writing 

J'ai tr ied \ n et bw.newLine() aussi, mais tous donnent le même résultat. Pourquoi laisse-t-il 2 lignes, et comment l'éviter?

+0

[fonctionne bien pour moi] (http://ideone.com/fu6Vpr), écrit à un 'StringWriter'. Comment visualisez-vous le contenu du fichier? Qu'est-ce que 'cat test.csv | xxd' spectacle? –

+0

Quelle est la sortie de 'fichier test.csv'? Je suppose que vous avez un problème avec le programme que vous utilisez pour afficher le fichier, pas avec le fichier lui-même. Ou peut-être que vous utilisez ftp en mode texte pour transférer le fichier, et il se casse en cours de route. –

+0

@AndyTurner Cette commande affiche '...' avant "Texte après écriture" – DxHito

Répondre

0

Juste essayé votre code et cela fonctionne comme prévu.

code:

try (BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true))) { 

    bw.append("Text after writing"); 
    bw.append(System.lineSeparator()); 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

test.csv avant:

1. Text already in file before writing 

test.csv après:

1. Text already in file before writing 
2. Text after writing 

Probablement le fichier que vous éditez se termine déjà par une nouvelle ligne. Vous pouvez envisager de vérifier cela avant de l'ajouter.

Remarque: utilisé un try-with-resource pour la simplicité du code.

Note: testé sur: jre1.8.0_77, Win7 (x64)