目前,我可以從數據庫中獲取將處於BLOB數據類型的數據。 因此,在代碼中它將存儲在字節[]中。 現在我可以通過提字符集(eg.UTF-8)作爲下面的字節數組轉換爲字符串:如何將字節數組轉換爲所有文件類型的字符串
public byte[] mtdFileEncryption(byte[] myData,String fileName) throws DNSException, Exception
{
String strLocalFolder = SysProperties.getprocessFile_LOCAL_FOLDER();
String strOnlineSSTPublicKey = SysProperties.getOnline_SST_ENCRYPTION_PUBLIC_KEY();
String strFilename = fileName;
PGPFileEncryptor fileEncryptor = new com.test.PGPFileEncryptor();
File outputFile = null;
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bufferOutput = null;
File toFile = new File(strLocalFolder);
if(!toFile.isDirectory())
{
//Create temp folder
toFile.mkdir();
}
try
{
//generate file to local folder
//outputFile = new File(strLocalFolder + strFilename + ".txt");
outputFile = new File(strLocalFolder + strFilename);
fos = new FileOutputStream(outputFile);
osw = new OutputStreamWriter(fos);
bufferOutput = new BufferedWriter(osw);
//WORKING FOR TXT
String str = new String(myData, "UTF-8");
bufferOutput.write(str);
}catch(Exception e)
{
e.printStackTrace();
throw e;
}finally
{
if(bufferOutput != null)
{
bufferOutput.close();
bufferOutput = null;
}
if (osw != null)
{
osw.close();
osw = null;
}
if (fos != null)
{
fos.close();
fos = null;
}
}
這意味着以下可以被轉換爲字符串,並我可以查看的內容.TXT存儲的文件
//WORKING FOR TXT
String str = new String(myData, "UTF-8");
bufferOutput.write(str);
但這種情況不會發生其他文件,.PDF或.xls 我無法查看內容。 我可以知道如何在不指定字符集的情況下將字節數組(myData)轉換爲所有文件類型(.pdf,.xls等)的字符串?
以下是如何將字節數組[]傳遞給方法。 file_content是表中的BLOB數據類型。
String contentString = rsStatementRequest.getValue("file_content");
BASE64Decoder en = new BASE64Decoder();
byte[] contentBytes = en.decodeBuffer(contentString);
contentBytes = mtdFileEncryption(contentBytes,fileName);
嘗試使用普通文本編輯器打開同一pdf文件,您將看到相同的結果。所以你的轉換操作是成功的,但不是邏輯。對於轉換字節後的每種文件類型,您應該使用適當的解析器 – strash
該線程可能有幫助:http://stackoverflow.com/questions/5449903/advanced-pdf-parser-for-java – strash
「二進制字節列表(Blob)「可以容納無限數據,但是字節數組只能通過int值進行索引,所以它對int的長度有限制(實際上由於某種原因intmax-8)。 –