2016-03-31 1 views
2

Je suis en train d'écrire un programme de "vérification de texte" en Java, mais je me suis bloqué en créant un identifiant unique pour chaque fichier.Java: BufferdWriter imprime une chaîne en deux lignes sans raison?

En fait, je crée un nouvel identifiant comme celui-ci:

String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", ""); 

Aussi mon programme crée un nouveau fichier et ouvre un BufferedWriter. En fait, quand je vais maintenant essayer d'ajouter (. J'essayé d'utiliser BufferedWriter#write, aussi, mais ça n'a pas marché non plus)

Si j'écris cette chaîne dans le fichier maintenant, il ressemble à ceci:

BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4Nj

dGVzdC5zYzA

mais il devrait être dans une seule ligne comme ceci:

BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4NjdGVzdC5zYzA

Au début, je pensais que ce serait probablement un problème avec moi la création d'une nouvelle ligne après avoir utilisé BufferedWriter#write, alors j'ai essayé chasse mon BufferedWriter avant de créer une nouvelle ligne. Il n'a pas non plus ...

PS: L'ensemble du code neccessary: ​​

String name = file.getName().substring(0, ind); 
    File next = new File(folder.getAbsolutePath(), name+".sc0"); 
    String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", ""); 

    try { 
     next.delete(); 
     next.createNewFile(); 

     BufferedWriter writer = new BufferedWriter(new FileWriter(next)); 
     logger.info("Adding compiler identifier to file ..."); 
     writer.write("#Script0:"+identifier); 

     writer.flush(); 
     writer.newLine(); 

     for(String str : lines) { 
      writer.newLine(); 
      writer.append(str); 
     } 

     writer.flush(); 
     writer.close(); 

    } catch (IOException e) { 
     logger.error("Strange bug ... Did you delete the file? Please try again!"); 
     return; 
    } 
+0

Quelle bibliothèque utilisez-vous pour encoder en base64? 'Base64' n'est pas l'encodeur base64 intégré dans Java 8. –

Répondre

0

Il est l'encodeur, pas le BufferedWriter. L'encodage Base-64 utilise une longueur de ligne de (je crois) 72 caractères.

+0

merci qui l'a résolu! –