Как добавить многострочную строку в текстовый файл на Java?

#java #string #base64 #line #filewriter

#java #строка #base64 #filewriter

Вопрос:

Здесь я формирую многострочную строку, которая должна быть записана в файл..

    Base64 encoder = new Base64(64,System.getProperty("line.separator").getBytes());
    String cert_begin = "-----BEGIN CERTIFICATE-----"  System.getProperty("line.separator");
    String end_cert =  System.getProperty("line.separator") "-----END CERTIFICATE-----";

    byte[] derCert = cert.getEncoded();

    String pemCertPre = new String(encoder.encode(derCert));

    String pemCert = cert_begin   pemCertPre   end_cert;
    return pemCert;
  

Ниже показан код, используемый для записи файла..

         String PEMString = convertToPem(cert);

        FileWriter PEMWriter = new FileWriter(PEMFile, false);
        PEMWriter.write(PEMString);

        //flush the file
        PEMWriter.flush();
  

Когда я записывал в файл, только pemCertPre записывается в одну строку..

И Base64 импортируется из

 org.apache.tomcat.util.codec.binary.Base64
  

Комментарии:

1. Хм. Предполагается, что 64 этим параметром является ширина строки. Вы уверены, что системное свойство работает правильно? Почему бы не жестко 'n' закодировать?

2. System.getProperty работает корректно.. я получаю многострочную строку.. но проблема в том, что я не смог записать многострочную строку в файл

3. Ваша PEMString строка contain заканчивается?

4. да .. PEMString содержит концы строк..

Ответ №1:

Привет, я использую BufferedWriter при записи в файлы. Может быть, вы могли бы попробовать это вместо этого. В качестве примера я написал basic writer в методе main, а два других метода предназначены для вашей проблемы. Однако в первом методе covertToPem() есть ошибка, я полагаю, что сертификат имеет тип «Сертификат»

Надеюсь, это поможет.

 public static void main(String args[]){

    File file = new File("subfolder/path/fileName.txt");
    String a = "one";
    String b = "two";
    char ch = 't';
    try {
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));

        writer.write(a);
        writer.newLine(); //makes new line

        writer.write(b);
        writer.newLine();

        writer.write(ch);
        writer.newLine();

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

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
    //try is instead

    private String[] convertToPem(Certificate cert){
        String[] pemCert = new String[3];

        try{
          Base64 encoder = new Base64(64,System.getProperty("line.separator").getBytes());
            String cert_begin = "-----BEGIN CERTIFICATE-----"  System.getProperty("line.separator");
            String end_cert =  System.getProperty("line.separator") "-----END CERTIFICATE-----";

            byte[] derCert = cert.getEncoded();

            String pemCertPre = new String(encoder.encode(derCert));

        }catch(Exception e){
            e.printStackTrace();
        }
        return pemCert;
    }

    private void writeToFile(File fileLoaction){

        Certificate cert = null;
        String[] pemCert = convertToPem(cert);

        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter(fileLoaction));

            for(int i=0; i<pemCert.length; i  ){
                writer.write(pemCert[i]);
                writer.newLine();
            }

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

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
  

импорт

 import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.security.cert.Certificate;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;