0
この例では、PostgreSQLからバイナリファイルを読み込む方法を見つけました。ファイルにデータを書き込む
conn.setAutoCommit(false);
// Get the Large Object Manager to perform operations with
LargeObjectManager lobj = ((org.postgresql.PGConnection) conn).getLargeObjectAPI();
ps = conn.prepareStatement("SELECT FILE FROM KNOWLEDGEBASE_FILES WHERE ID = ?");
ps.setInt(1, 333);
ResultSet rs = ps.executeQuery();
while (rs.next())
{
// Open the large object for reading
long oid = rs.getLong(1);
LargeObject obj = lobj.open(oid, LargeObjectManager.READ);
// Read the data
byte buf[] = new byte[obj.size()];
obj.read(buf, 0, obj.size());
// Do something with the data read here
FileChannel rwChannel = new RandomAccessFile("License_Agreement.pdf", "rw").getChannel();
ByteBuffer wrBuf = rwChannel.map(FileChannel.MapMode.READ_WRITE, 0, buffer.length * number_of_lines);
for (int i = 0; i < obj.size(); i++)
{
wrBuf.put(obj);
}
// Close the object
obj.close();
}
rs.close();
ps.close();
// Finally, commit the transaction.
conn.commit();
どのようにNIOを使用してファイルにデータを書き込むことができますか?このラインwrBuf.put(obj);
で
私はエラーを取得する:プットが見つかり
もし適切な方法(のLargeObject) 方法ByteBuffer.put(バイト)が適用 (引数の不一致;のLargeObjectはバイトに変換することはできません)ではないん 方法 方法ByteBuffer.put(バイト[])適用 (引数ミスマッチ;れるLargeObjectは[]のバイトに変換できない)ではない。ByteBuffer.put(のByteBuffer)は(れるLargeObjectがのByteBufferに変換できない引数の不一致) 適用されない
何らかの理由で、コードを実行した後にファイルが作成されません。 –
ファイルは書き込み可能ではなく、ユーザーに必要な権利がありますか?スタックトレースを取得しましたか? –
はい、書き込み制限はありません –