我目前正在使用DBFReader(github.com/jamel/dbf)来读取DBF文件,但是当它输出我认为是数据的哈希表示时?但是,对于数据为数字的列,它很好。
这是代码片段(非常基本的代码):
InputStream inputStream = new FileInputStream("./src/data/dbf/Room_20040610.DBF");
DbfReader reader = new DbfReader(inputStream);
Object[] row;
while ((row = reader.nextRecord()) != null) {
System.out.println(row[1]);
}
reader.close();
字符串类型数据的输出
[B@54b749a5
[B@4d441b16
[B@324e68fb
[B@39ce508a
[B@1809b1ac
[B@246f9f88
[B@1c52ac68
[B@77b4ee5e
[B@78d9ab8
[B@61a8a9e7
预计会这样:
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
首先,只有一些假设:
dbf文件没有损坏或不可读。
当我尝试使用System.out.println时,作为哈希值出现的“字符串”数据包含英语和非英语字符,但都不起作用。
我在Mac上使用Eclipse。 (我想知道它在Windows上是否有所不同?)
非常感谢有关如何使用DBFReader更正读取字符串的任何输入。
谢谢!
答案 0 :(得分:1)
而不是做
System.out.println(row[1]);
尝试将row[1]
转换为预期的类型。例如
SOP(((String) row[1]).toString()); //if String is expected or
SOP(((String) row[1])); //should also work
[B@54b749a5
正在打印,因为row[1]
会返回Object
类型,然后当您将其传递给println
时,它会使用toString()
提供的Object
定义1}} class。
答案 1 :(得分:1)
对象散列中的[B @表示它是一个字节数组,所以你需要这样做:
new String((byte[]) row[1])