Есть ли способ сбросить FileReader, кроме как с помощью BufferedReader? - PullRequest
0 голосов
/ 25 октября 2018

Я работал над некоторыми драйверами jdbc.В моем коде драйвера я должен повторно использовать объект Reader для распределения по 3 различным узлам.После поиска в stackoverflow я понял, что можно использовать BufferedReader с mark () и reset ().Но в этом случае будет использоваться внутренний буфер.Так нет ли другого способа, кроме как с помощью BufferedReader?Я не могу открыть файл, потому что только объект, который я могу обработать, это Reader.

[код клиента - нельзя изменить]

PreparedStatement stmt = conn.prepareStatement("UPDATE t1 SET 
i2 = ? WHERE i1 = ? OR i1 = ?");
File file = new File("aaa.txt");
FileReader reader = new FileReader(file);
stmt.setCharacterStream(1, reader, (int)file.length());
stmt.setInt(2, 1); 
stmt.setInt(3, 5); 
stmt.execute();

[код драйвера]

public void setCharacterStream(int paramIdx, Reader reader, int length) throws SQLException
{
    setParameter_node1(paramIdx, reader, Types.CLOB); // node1
    setParameter_node2(paramIdx, reader, Types.CLOB); // node2 (How to reset reader??)
    setParameter_node3(paramIdx, reader, Types.CLOB); // node3 (How to reset reader??)
}
...