2011-06-07 54 views
4

我有一個Web服務,它返回一個PDF文件的base64編碼的字符串。將base64編碼的字符串存儲爲文件

我想將此文件保存到SD卡。但是當我嘗試這樣做時,Adobe Reader會告訴我該文件已損壞。顯然我沒有妥善保存。

byte[] pdfAsBytes = Base64.decode(resultsRequestSOAP.toString(), 0); 

File filePath = new File(Environment.getExternalStorageDirectory()+"/braodcasts.pdf"); 
FileOutputStream os = new FileOutputStream(filePath, true); 
os.write(pdfAsBytes); 
os.close(); 

resultsRequestSOAP.toString()看起來是這樣的:

JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhlbi1JRSkgPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbIDMgMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUi9HUzggOCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2U5IDkgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNTk1LjMyIDQxOS41Ml0gL0NvbnRlbnRzIDQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1M+Pg0KZW5kb2JqDQo0IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE0ND4+DQpzdHJlYW0NCnicLY29CgIxEIT7hX2HKVVw3ewluUsr/qCdGLAQC5HzqlPU9wdjcKaaYZhvmZkWGwfnRD3ynclBix18l6T0TRJ1yGOZbY8thg+TYqip+6ct03mC6QV5z7Quhy+muYpWWWjhLEqKCClIYzBTCRHvnuk0w4PJuyi+Uk07MbRWsWV6+2F343XoE1ZPHJi+nDkiaw0KZW5kc3RyZWFtDQplbmRvYmoNCjUgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjEvQmFzZUZvbnQvQUJDREVFK0NhbGlicmkvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlwdG9yIDYgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhc 

那只是一個片段!

謝謝

+0

我剛剛注意到所有的pdf都以'JVBERi0xLj'開頭。我只是用第一部分來檢查我的pdf是否更改或不... – miva2 2015-12-29 10:14:18

回答

11

也許你可以在關閉它之前刷新FileOutputStream。

os.write(pdfAsBytes); 
os.flush(); 
os.close(); 
+0

謝謝!工作! – AhmedW 2011-06-07 17:02:45

+3

這讓我感到驚訝。我會期望關閉會自動刷新任何未寫入的字節。 – MRAB 2011-06-07 18:11:33

+0

'FileOutputStream'中的'flush()'方法什麼也不做,它從'OutputStream'繼承。正如文檔所說'刷新這個流。這種方法的實現應該確保寫出任何緩衝的數據。這個實現什麼都不做。' – miva2 2015-12-29 14:44:07

0

它看起來像你打開它追加。是否已經有一個名稱與您要追加的文件?

+0

我不打開它的追加,我每次覆蓋文件 – AhmedW 2011-06-07 16:56:59

+0

看看在文本編輯器中的PDF。第一行應該是「%PDF-1.4」,最後一行應該是「%% EOF」。 – MRAB 2011-06-07 17:03:15

+0

是的,我只是在寫完後沒有沖洗文件。感謝您的幫助:) – AhmedW 2011-06-07 17:16:30

相關問題