JAVA之读取SPSS(.sav)文件问题分享

起因

最近在看SPSS数据库怎么通过Java程序读取相关内容,然后发现大家都是通过使用一个叫做spss-reader的工具包,Maven的依赖如下:

  <dependency>
    <groupId>com.bedatadriven.spss</groupId>
    <artifactId>spss-reader</artifactId>
    <version>1.3</version>
  </dependency>

分析

然后我在使用的过程中发现读取Case的中文结果的时候发现总是读取不全间隔出现问号乱码。
通过分析代码发现,在处理像UTF-8中文三字节的情况下逻辑存在问题,我个人做了一些修改,目前测试问题不大。

使用

Github相关地址 https://github.com/meetzy/spss-reader
新的仓库上Clone代码 自行打包

    public static void main(String[] args) throws IOException {
        SpssDataFileReader reader = new SpssDataFileReader("xxx.sav");
        while (reader.readNextCase()) {
            for (SpssVariable variable : reader.getVariables()) {
                if (variable.isNumeric()) {
                    System.out.print(reader.getDoubleValue(variable.getIndex()));
                } else if (variable.isVeryLongString()) {
                    System.out.print(reader.getVeryLongStringValue(variable.getIndex()));
                } else {
                    System.out.print(reader.getStringValue(variable.getIndex()));
                }
            }
            System.out.println();
        }
    }

请教

由于并不实质性了解Spss 只是由问题本身发现并做了更改,如果有不妥之处,还请有关方面相关朋友、专家提供指导与帮助。

posted @ 2022-02-21 14:48  meetzy  阅读(710)  评论(2编辑  收藏  举报