我需要讀取文件的內容,使用API Writer(PEMWriter)將它們寫入輸出流將內容的格式轉換爲所需的格式),然後從該輸出流中重新讀取新格式化的內容並存儲在String變量中。如何讀取文件內容,寫入輸出流和重新讀取並存儲在字符串變量存儲在java中
任何人都知道如何做到這一點?
在代碼字:
PEMWriter writer = null;
Writer out = null;
Reader in = null;
String priv = null;
KeyStore ks = null;
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
ks.load(new FileInputStream(MyConfig.KEYTOOL_FILE),
MyConfig.PASSWORD.toCharArray());
KeyPair keyPair = getPrivateKey(ks, "myKey",
MyConfig.PASSWORD.toCharArray());
PrivateKey privateKey = keyPair.getPrivate();
out = new BufferedWriter (new OutputStreamWriter(new org.apache.commons.io.output.ByteArrayOutputStream()));
writer = new PEMWriter(out);
writer.writeObject(privateKey);
in = new BufferedReader (new org.apache.commons.io.input.NullReader(new Long(5000).longValue()));
IOUtils.copy(in, out);
priv = IOUtils.toString(in);
上述代碼應工作,因爲它有一個書寫器(出)而它與使用充氣城堡API PEMWriter的內容填充。嘗試使用Reader(in)重新讀取out內容並將它們存儲到String(priv)時會發生問題。我得到一個IO異常,說明在文件結束後讀取。這發生在行IOUtils.copy(in, out);
。 我很感謝這個問題的一些幫助。提前致謝。
如果你得到一個異常,永遠不要忘記也張貼堆棧跟蹤。 – jlordo
'new Long(5000).longValue()'?爲什麼不只是'5000L'?受虐狂? :-)另外,我不明白代碼如何與問題相關?您沒有涉及任何文件,並且您從NullReader讀取。 –
@JBNizet - 我編輯了原始問題以包含先前遺漏的代碼 - 最初被忽略以避免不必要地混淆問題。 – user2144209