#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;