java怎么解析指定的文件,并保存到数据库

java怎么解析指定的文件,并保存到数据库,第1张

如果txt,xls,按行读,用特定的字符作分隔符来拆分,读一行处理一行,直到结束,导入都是这样的.

给个txt的案例给你看看:

File logFile = new javaioFile("d://PartInputLogtxt"); //

ins = formgetFile()getInputStream(); //读取数据流

workBook = WorkbookgetWorkbook(ins); //打开工作簿

sheet = workBookgetSheet(0); //打开SHEET

int rowSize = sheetgetRows(); //获取总行数

for(int i=0;i<rowSize;i++){

if(sheetgetCell(0, i)getContents()trim()equals(""))break;

String gysNo = sheetgetCell(0, i)getContents()trim();//获取第i行第1列的具体数据

String bpNo = sheetgetCell(1, i)getContents()trim(); //获取第i行第2列的具体数据

String numStr = sheetgetCell(2, i)getContents()trim(); //获取第i行第3列的具体数据

//数据都可以读取到剩下的就在循环中插入了

通常对用户上传的需要保存到数据库中。解决方法一般有两种:一种是将保存的路径存储到数据库;另一种是将以二进制数据流的形式直接写入数据库字段中。以下为具体方法:

一、保存的上传路径到数据库:

string uppath="";//用于保存上传路径

//获取上传的文件

string fileFullname = thisFileUpload1FileName;

//获取上传的时间,以时间作为的名字可以防止重名

string dataName = DateTimeNowToString("yyyyMMddhhmmss");

//获取的文件名(不含扩展名)

string fileName = fileFullnameSubstring(fileFullnameLastIndexOf("\\") + 1);

//获取扩展名

string type = fileFullnameSubstring(fileFullnameLastIndexOf("") + 1);

//判断是否为要求的格式

if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")

{

//将上传到指定路径的文件夹

thisFileUpload1SaveAs(ServerMapPath("~/upload") + "\\" + dataName + "" + type);

//将路径保存到变量,将该变量的值保存到数据库相应字段即可

uppath = "~/upload/" + dataName + "" + type;

}

二、将以二进制数据流直接保存到数据库:

引用如下命名空间:

using SystemDrawing;

using SystemIO;

using SystemDataSqlClient;

设计数据库时,表中相应的字段类型为iamge

保存:

//路径

string strPath = thisFileUpload1PostedFileFileNameToString ();

//读取

FileStream fs = new SystemIOFileStream(strPath, FileModeOpen, FileAccessRead);

BinaryReader br = new BinaryReader(fs);

byte[] photo = brReadBytes((int)fsLength);

brClose();

fsClose();

//存入

SqlConnection myConn = new SqlConnection("Data Source=;Initial Catalog=stumanage;User ID=sa;Password=123");

string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";// *** 作数据库语句根据需要修改

SqlCommand myComm = new SqlCommand(strComm, myConn);

myCommParametersAdd("@photoBinary", SqlDbTypeBinary, photoLength);

myCommParameters["@photoBinary"]Value = photo;

myConnOpen();

if (myCommExecuteNonQuery() > 0)

{

thisLabel1Text = "ok";

}

myConnClose();

读取:

连接数据库字符串省略

myconOpen();

SqlCommand command = new

SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改

byte[] image = (byte[])commandExecuteScalar ();

//指定从数据库读取出来的的保存路径及名字

string strPath = "~/Upload/zhangsanJPG";

string strPhotoPath = ServerMapPath(strPath);

//按上面的路径与名字保存文件

BinaryWriter bw = new BinaryWriter(FileOpen(strPhotoPath,FileModeOpenOrCreate));

bwWrite(image);

bwClose();

//显示

thisImage1ImageUrl = strPath;

采用俩种方式可以根据实际需求灵活选择。

File src=new File("原文件地址");

InputStream inps = new FileInputStream(file) ;//输入流

File des = new File("目的文件地址") ;

OutputStream ops = new FileOutputStream(des) ;//输出流

if(!desisExist()){//不存在,新建

descreateNewFile() ;

}

int temp = 0 ;

while((temp=inpswrite!)=-1){//读入,判断是否读取结束

opswrite(temp) ;//写入

}

try{

opsflush() ;

opsclose() ;

inpsclose() ;

}catch(Exception e){

}

纯手打,可能会有些错误,但是总体思路是正确的,具体的可以参考JavaIO包!看看API

首先建好数据库。假设下面的数据库已建好,数据表名为fileinfo

id    filename   filesize  extension createtime

分别代码,编号 文件名 文件大小  扩展名 文件创建时间

1,创建数据表

第二步。在对应的文件夹下复制好文件。假设当前目录为image,该目录下有下列文件。

第三步,信息入库,本人这里以C#为例。

public static InsertFilesInfo(string path)   //创建方法。这里采用参数传递,方便对不同目录下的文件进行遍历入库

{

string filename=""; ///定义变量,用于存放文件名

string filesize=""; ///定义变量,用于存放文件大小

string extension="";/// 定义变量,用于存放文件扩展名

string createtime=""; ///定义变量,用于存放文件创建时间

SystemIODirectoryInfo dir= new SystemIODirectoryInfo(SystemWeb>

///先获取相应的目录。并实例化目录对象。方便获取该 目录下的文件。

SystemIOFileInfo[] fInfo = dirGetFiles();

///创建文件信息集合,将path参数指定的目录下的文件全部获取到,存入fInfo这个文件信息数组。

foreach (SystemIOFileInfo f in fInfo) ///开始遍历数组。将所有的文件遍历出来。

filename = fNameToString();

filesize=fLengthToString();

extension=fExtensionToString();

createtime=fCreationTimeToString()

///上述 *** 作已经获取到文件相关信息。

下一步入库。

入库,假设数据连接对象已创建好,具体的数据连接代码,这里不再提供了。

string sql="insert fileinfo (filename,filesize,extension,createtime) values ('" + filename + "','"+ filesize+"','"+ extension+"','"+ createtime+"'")";

cmdCommandType='Text';

cmdCommandText=sql;

cmdExecuteNoQuery();

///文件信息已经入库了。这是循环入库,有多少个文件,数据库表中就会有多少条信息。

}

另外可以使用php。原理都是一样的。都是先遍历目录下所有的文件,再将文件信息存储。再遍历。再入库。

数值是没有必要分几进制的,它在内存中就是二进制保存的。只是为了方便人们查看,可以转为n进制的格式显示在文本框中进行显示的。

所以

1 buf 就不要转为字符串了,直接以二进制格式存入数据库。下次也是以二进制的形式取出(就是byte[])

2 richTextBox1 要显示二进制也好,16进制也好 根据实际需要决定。象你上面的例子,builder 中的内容直接插入到richTextBox1中就好了。

1将Image图像文件存入到数据库中

我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中

要这里有关数据的 *** 作略写,我将一些代码段写成方法,方便直接调用

//根据文件名(完全路径)

publicbyte[](stringfileName)

{

FileStreamfs=newFileStream(fileName,FileModeOpen);

int=(int)fsLength;

byte[]image=newbyte[];

fsRead(image,0,);

fsClose();

returnimage;

}

//另外,在ASPNET中通过FileUpload控件得到的图像文件可以通过以下方法

publicbyte[](FileUploadFileUpload1)

{

Streamstream=FileUpload1PostedFileInputStream;

byte[]photo=newbyte[FileUpload1PostedFile];

streamRead(photo,0,FileUpload1PostedFile);

streamClose();

returnphoto;

}

2从SQLServer数据库读取Image类型的数据,并转换成bytes[]或Image图像文件

//要使用要加载usingSystemDataSqlClient命名空间

//将数据库中的Image类型转换成byte[]

publicbyte[]SetImage(reader)

{

return(byte[])reader["Image"];//Image为数据库中存放Image类型字段

}

//将byte[]转换成Image图像类型

//加载以下命名空间usingSystemDrawing;/usingSystemIO;

usingSystemDataSqlClient;/

publicImage(byte[]mybyte)

{

Imageimage;

=new(mybyte,0,mybyteLength);

image=ImageFromStream();

returnimage;

}

以上就是关于java怎么解析指定的文件,并保存到数据库全部的内容,包括:java怎么解析指定的文件,并保存到数据库、批量添加图片后怎么存入数据库、java怎么用IO流把一个文件(SQLite数据库文件)复制到另一个位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9494904.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存