在Java中遇到从InputStream读取的IOException

Sid*_*rth 1 java io ioexception

我在Java程序中运行这些代码行

        FileInputStream in = new FileInputStream(file);
        InputStreamReader reader = new InputStreamReader(in);
        int fileLength = (int)file.length();

        pstmt1.setCharacterStream(6, reader, fileLength);
Run Code Online (Sandbox Code Playgroud)

但我在一些文件中得到以下异常,但在所有文件中都没有

异常:遇到读取InputStream的IOException,参数#6.剩余数据填充为0x0.有关详细信息,请参阅附件Throwable.ERRORCODE = -4225,SQLSTATE = null

我在哪里使用DB2数据库,我的表的结构是 -

CREATE TABLE SOURCE (
                LIB VARCHAR(10) NOT NULL,
                FILE VARCHAR(10) NOT NULL,
                MBR VARCHAR(10) NOT NULL,
                ATTR VARCHAR(10) NOT NULL,
                SEQ DOUBLE NOT NULL,
                DTA CLOB(5M),
                DAT INTEGER,
                RECN INTEGER,
                UNIQUE (LIB, FILE, MBR, ATTR, SEQ) 
            );
Run Code Online (Sandbox Code Playgroud)

请帮我恢复这个例外.

提前致谢!

Jon*_*eet 6

我怀疑问题是你是根据文件的长度设置长度,以字节为单位,而参数to setCharacterStream是一个字符长度.

您还使用平台默认编码,这很少是一个好主意.

你知道数据的编码是什么吗?如果是固定宽度编码,则可以根据字节数计算出字符数.否则,你最好调用没有指定长度的重载:

pstmt1.setCharacterStream(6, reader);
Run Code Online (Sandbox Code Playgroud)

(但是在创建时,请更改代码以指定编码InputStreamReader.)