「java读写dbf」JAVA读写锁性能

博主:adminadmin 2022-11-22 19:05:05 67

本篇文章给大家谈谈java读写dbf,以及JAVA读写锁性能对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用java操作.dbf数据库

1.引入javadbf.4.1.jar

2.

import com.linuxense.javadbf.DBFField;

import com.linuxense.javadbf.DBFReader;

3.实例

package com.realhope.jdbf;

import java.io.FileInputStream;

import java.io.InputStream;

import com.linuxense.javadbf.DBFField;

import com.linuxense.javadbf.DBFReader;

public class readDBF {

public static void readDBF(String path) {

InputStream fis = null;

try {

// 读取文件的输入流

fis = new FileInputStream(path);

// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息

DBFReader reader = new DBFReader(fis);

// 调用DBFReader对实例方法得到path文件中字段的个数

int fieldsCount = reader.getFieldCount();

// 取出字段信息

for (int i = 0; i fieldsCount; i++) {

DBFField field = reader.getField(i);

System.out.print(field.getName());

}

Object[] rowValues;

// 一条条取出path文件中记录 rowValues.length;

while ((rowValues = reader.nextRecord()) != null) {

for (int i = 0; i rowValues.length; i++) {

System.out.println(rowValues[i]);

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

fis.close();

} catch (Exception e) {

}

}

}

public static void main(String[] args) {

readDBF.readDBF("Y:/dbf/01-04-2013/sjshq.DBF");

}

}

java解析dbf格式时里面数据类型怎么判断

使用JDBC-ODBC桥接方式读取Access文件,使用Acces

与DBF都需要配置桥接模式,在控制面板里,选择管理工具里配置

核心代码如下,

Java代码  

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

con = DriverManager.getConnection("jdbc:odbc:ss",  bulidPath, "");//加载驱动,默认密码,空字符串即可

//System.out.println("Access连接:"+con);

} catch (Exception e) {

e.printStackTrace();

}

Java代码  

AccessBase ab=new AccessBase();

Connection con=ab.getConnection("zdbz.mdb");

String sql="select * from test";//查询表

PreparedStatement ps=con.prepareStatement(sql);

ResultSet rs=ps.executeQuery();

//ResultSetMetaData s=rs.getMetaData();

// int i=s.getColumnCount();

//System.out.println(i);

ListExcelEntity list=new ArrayListExcelEntity();

while(rs.next()){

ExcelEntity xml=new ExcelEntity();

xml.setUi(rs.getString(1));

xml.setTi(rs.getString(2));

xml.setTa(rs.getString(3));

xml.setDp(rs.getString(4));

xml.setVi(rs.getString(5));

xml.setIp(rs.getString(6));

xml.setPg(rs.getString(7));

xml.setAb(rs.getString(8));

xml.setKw(rs.getString(9));

xml.setMh(rs.getString(10));

list.add(xml);

}

DAO.addAccess(list);

// System.out.println(i);

rs.close();

ps.close();

con.close();

4,最后在来说一下,比较纠结的DBF的解析,关于这个东西,散仙以前也没用过,现在客户有这种需求,自然得做好,于是乎Google了一把,效果似乎还不错,第一页上基本全是有关于,JAVA解析DBF格式的,当时我还在想,得来全不费工夫,于是,找了一篇,看起来似乎挺靠谱的解析博客,拷贝了其中的代码,拿过来使用,结果报了各种异常,这种方式是用流读取的,然后直接解析流,提取每一行数据,还附带一个jar包,散仙后面会把jar给传上来,我们先看下这种方式的代码:

Java代码  

package com.dbhelper;

import java.io.FileInputStream;

import java.io.InputStream;

import com.hexiong.jdbf.DBFReader;

public class ParseDBF {

public static void main(String[] args) {

readDBF("C:\\Users\\cuichao\\Desktop\\zdbz\\test.DBF");

}

public static void readDBF(String path)

{

InputStream fis = null;

try

{

// 读取文件的输入流

fis = new FileInputStream(path);

// 根据输入流初始化一个DBFReader实例,用来读取DBF文件信息

DBFReader reader = new DBFReader(fis);

//DBFReader reader=new DBFReader("C:\\Users\\cuichao\\Desktop\\zdbz\\test.DBF");

// System.out.println(reader);

// 调用DBFReader对实例方法得到path文件中字段的个数

int fieldsCount = reader.getFieldCount();

System.out.println(fieldsCount);

Object[] s= reader.nextRecord();

while(reader.nextRecord()!=nullreader.nextRecord().length0){

for(int i=0;ireader.nextRecord().length;i++){

System.out.println(reader.nextRecord()[i]);

}

}

}

catch (Exception e)

{

e.printStackTrace();

}

finally

{

try {

//  fis.close();

} catch (Exception e) {

}

}

}

}

这种流读取的方式,散仙也看了下源码,代码比较繁琐,而且有好多限制不能用,比如说,读取某列的字符长度不能大于8,或者包含某个C或D的字符的不能用,等等。散仙,猜想这个发博客的人,是根据自己的业务定义的,这也不能怪人家,各个业务的需求都不一样,难免会出现这种情况。 下面,我们来看看,最王道,最通用的解析方法, 既然,它是数据库,那么我们为什么不按数据库的方式来搞呢? 用流读取的方式,不通用,而且异常百出,按数据库的方式,解决,才是最完美的方法。

首先配置好的桥接,截图如下

核心代码如下

Java代码  

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动

try {

//conn = DriverManager.getConnection(DB_URL);

conn = DriverManager.getConnection("jdbc:odbc:ss","test.dbf","");//无密码则空字符串

pstm = conn.prepareStatement("select * from test"); // 此处的XXB 为DBF数据文件的名字

rs = pstm.executeQuery();

至此,完美解决DBF数据库文件读取。网上的东西,太杂了,所以,我们要理智判断,取其精华,去其糟粕,为我所用。

终于被我找到了!

完全free的: com/ 这个网站主要是做数据库连接中间介的,其中用到了一个他们自己开发的叫做JDBF的项目,该项目就是专门控制dbf文件的,整个包只有30K大小,你们随便用个工具反编译一下就可以看懂里面的代码,很简单,就是按照具体格式处理文件!(注意,不是使用JDBC连接的。)

不过我试了一下,发现只支持三中格式的:foxpro2.x、DBase IV、DBase III。 

大家用得着的话可以去那里下载! 有问题的话可以再来问我。

我发现国外的这类开源网站很多,国内的就少得可怜了!唉!

java如何操作DBF文件?

ml页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。

2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)

%

response.setContentType(fileminitype);

response.setHeader("Location",filename);

response.setHeader("Cache-Control", "max-age=" + cacheTime);

//filename应该是编码后的(utf-8)

response.setHeader("Content-Disposition", "attachment; filename=" + filename);

response.setContentLength(filelength);

OutputStream outputStream = response.getOutputStream();

InputStream inputStream = new FileInputStream(filepath);

byte[] buffer = new byte[1024];

int i = -1;

while ((i = inputStream.read(buffer)) != -1) {

outputStream.write(buffer, 0, i);

}

outputStream.flush();

outputStream.close();

inputStream.close();

outputStream = null;

%

3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。

servlet端示例

public void service(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType(" text/plain ");

OutputStream outputStream = null;

try {

outputStream = res.getOutputStream();

//把文件路径为srcFile的文件写入outputStream中

popFile(srcFile, outputStream)) ;

} catch (IOException e) {

e.printStackTrace();

}

}

JApplet端示例

URLConnection con;

try {

//url是被调用的SERVLET的网址 如 *.do

con = url.openConnection();

con.setUseCaches(false);

con.setDoInput(true);

con.setDoOutput(true);

con.setRequestProperty("Content-Type",

"application/octet-stream");

InputStream in = con.getInputStream();

ProgressMonitorInputStream pmInputStream = new ProgressMonitorInputStream

(pane, "正在从服务器下载文件内容", in);

ProgressMonitor pMonitor = pmInputStream.getProgressMonitor();

pMonitor.setMillisToDecideToPopup(3);

pMonitor.setMillisToPopup(3);

//localfilepath本地路径,localstr文件文件夹,filename本地文件名

String localfilepath = localstr + filename ;

//方法saveFilsaveFilee是把输入流pmInputStream写到文件localfilepath中

if(saveFilsaveFilee(localfilepath,pmInputStream)){

openLocalFile(localfilepath);

}

4.顺便把JApplet上传文件的代码也贴上来.

JApplet端示例

URLConnection con;

try {

con = url.openConnection();

//url是被调用的SERVLET的网址 如 *.do

con.setUseCaches(false);

con.setDoInput(true);

con.setDoOutput(true);

con.setRequestProperty("Content-Type","application/octet-stream");

OutputStream out = con.getOutputStream();

//localfilepath本地路径,localstr文件文件夹,filename本地文件名

String localfilepath = localstr + filename;

//文件getOutputStream是把文件localfilepath写到输出流out中

getOutputStream(localfilepath,out);

InputStream in = con.getInputStream();

return true;

}catch (IOException e) {

System.out.println("文件上传出错!");

e.printStackTrace();

}

servlet端代码示例

public void service(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType(" text/plain ");

InputStream inputStream = null;

try {

inputStream = res.getInputStream();

//把输入流inputStream保存到文件路径为srcFile的文件中

writefile(srcFile, inputStream);

} catch (IOException e) {

e.printStackTrace();

}

} // end service

总结:在文件的传输中是流的形式存在的,在硬盘上是文件的形式存在的。我们要做的只是通过HttpServletRequest和HttpServletResponse,或者是response和request来发送流和读取流。以及把文件转换成流或把流转换成文件的操作。

java读写dbf的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA读写锁性能、java读写dbf的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。