JAVA Dans DBF库,从DBF文件获取数据,字节[]到int
我是Java新手(大约3个月前),现在我正在尝试使用Java程序从DBF文件获取数据。我已经得到了Dans DBF库来连接我的程序和DBF文件。我正在使用以下代码打开文件:JAVA Dans DBF库,从DBF文件获取数据,字节[]到int,java,string,integer,byte,dbf,Java,String,Integer,Byte,Dbf,我是Java新手(大约3个月前),现在我正在尝试使用Java程序从DBF文件获取数据。我已经得到了Dans DBF库来连接我的程序和DBF文件。我正在使用以下代码打开文件: Table table = new Table(new File(Filename)); // get the file try { table.open(IfNonExistent.ERROR); // open the file } catch (Exception e){ System.out.pri
Table table = new Table(new File(Filename)); // get the file
try {
table.open(IfNonExistent.ERROR); // open the file
} catch (Exception e){
System.out.println("Error : " + e);
}
List<Field> fields = table.getFields(); // get the column
Iterator<Record> recordIterator = table.recordIterator(); // get the rows
问题是,原始值是字节[]。我可以将数据转换为字符串,但无法将数据转换为整数。我已经试过了:
Integer.parseInt(new String(rawValue))
但这是不可能做到的。我怀疑原始值存储的空间不仅仅是数字字符。有人能帮我解决这个问题吗
编辑:
为了更清楚地说明这一点,我已经尝试这样做:
System.out.println(new String(rawValue));
输出类似于[300](忽略[])
我注意到300之前有一些空格。如何转换数值字段的原始字节取决于其实际类型,该类型在字段定义中存储为单个字符。有一个 以下是FoxPro如何编写数字: 'N':数字存储为字符串,可能包含前导符号和小数分隔符,并用空格填充到字段大小。整数部分可能会将定义的小数点从右边挤出(即,将10写入定义为n(3,1)的字段,结果为“10”);溢出时,字段将用星号填充(就像将10写入定义为n(1)的字段时) 'I':原始32位整数(小端);值0x8000000(-2^31)是禁止的,表示溢出 'B':(又称“二进制64”) 'Y':按10000缩放的原始64位整数(小尾数)
注意:DBF文件通常是由自己编写的代码编写的,这些代码不符合dBASE或Fox等程序设置的任何事实标准,因此请注意emptor。Fox和dBASE不会编写包含[300]等原始内容的数字字段,因此您可能手头有一个字符串字段,或者是由b0rked工具编写的内容。如何转换数字字段的原始字节取决于其实际类型,该类型作为单个字符存储在字段定义中。有一个 以下是FoxPro如何编写数字: 'N':数字存储为字符串,可能包含前导符号和小数分隔符,并用空格填充到字段大小。整数部分可能会将定义的小数点从右边挤出(即,将10写入定义为n(3,1)的字段,结果为“10”);溢出时,字段将用星号填充(就像将10写入定义为n(1)的字段时) 'I':原始32位整数(小端);值0x8000000(-2^31)是禁止的,表示溢出 'B':(又称“二进制64”) 'Y':按10000缩放的原始64位整数(小尾数)
注意:DBF文件通常是由自己编写的代码编写的,这些代码不符合dBASE或Fox等程序设置的任何事实标准,因此请注意emptor。Fox和dBASE不会编写包含[300]等原始内容的数字字段,因此您可能手头有一个字符串字段,或者是由b0rked工具编写的内容。非常感谢您的回复。特别是PM 77-1的评论
Integer.parseInt(new String(rawValue).trim())
解决问题。非常感谢您的回复。特别是PM 77-1的评论
Integer.parseInt(new String(rawValue).trim())
解决这个问题。字符串形式是什么样子的?System.out.println(新字符串(rawValue));将打印类似于[300]的内容(忽略[])我注意到在300之前有一些空格字段。如何
(新字符串(rawValue))。trim()
?谢谢你的提示,你的提示解决了我的问题,非常感谢!谢谢你的提示,你的提示解决了我的问题,非常感谢!它在字符串形式中是什么样子的?System.out.println(新字符串(rawValue));将打印类似于[300]的内容(忽略[])我注意到在300之前有一些空格字段。如何(新字符串(rawValue))。trim()
?谢谢你的提示,你的提示解决了我的问题,非常感谢!谢谢你的提示,你的提示解决了我的问题,非常感谢!