- 浏览: 109248 次
- 性别:
- 来自: 北京
文章分类
最新评论
/**
* 创建目录
* @param directory
* @param subDirectory
*/
private void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true){
fl.mkdir();
} else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (subFile.exists() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
}
catch (Exception ex) {
log.error(ex);
}
}
/**
* 解压缩zip文件
* @param zipFileName
* @param outputDirectory
*/
public HashMap makeZipToFile(String zipFileName, String outputDirectory) {
HashMap map = new HashMap();
String newFilePath = "";
ZipFile zipFile = null;
try {
zipFile = new ZipFile(zipFileName);
java.util.Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
// System.out.println("-------->>文件名:"+zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
newFilePath = outputDirectory + File.separator + name;
newFilePath = newFilePath.replace('\\','/');
// System.out.println("创建目录:" + outputDirectory
// + File.separator + name);
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
createDirectory(outputDirectory, fileName.substring(0,
fileName.lastIndexOf("/")));
fileName = fileName.substring(
fileName.lastIndexOf("/") + 1, fileName
.length());
}
File f = new File(outputDirectory + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
String saveFilePath = outputDirectory + File.separator
+ zipEntry.getName();
//图片路径
saveFilePath = saveFilePath.replace('\\', '/');
//图片名称
String saveFileName = zipEntry.getName().substring(zipEntry.getName().lastIndexOf("/")+1,zipEntry.getName().indexOf("."));
//定义图片大小
toJPG(saveFilePath,null,100);
//将数据库查询字段和图片路径放在map中
map.put(saveFileName, saveFilePath);
// System.out.println("-------->>创建文件路径:"+saveFilePath);
// System.out.println("-------->>创建文件名:"+saveFileName);
}
}
//如果不关闭,无法删除zip文件
zipFile.close();
} catch (Exception ex) {
log.error(ex);
}
boolean flag = true;
try {
//保存图片
savePhotoBatch(map);
File oldFile = new File(zipFileName);
//删除zip文件和解压后的文件
oldFile.delete();
deleteDirectory(newFilePath);
} catch (Exception e) {
flag =false;
log.error(e);
}
HashMap flagMap = new HashMap();
flagMap.put("flag", String.valueOf(flag));
return flagMap;
}
public static void toJPG(String source, String dest, int quality) throws JimiException {
if (dest == null || dest.trim().equals(""))
dest = source;
if (!dest.toLowerCase().trim().endsWith("jpg")) {
dest += ".jpg";
System.out.println("Overriding to JPG, output file: " + dest);
}
if (quality < 0 || quality > 100 || (quality + "") == null
|| (quality + "").equals("")) {
System.out.println("quality must between ’0’ and ’100’");
System.out.println("set to DEFAULT value:’75’");
quality = 100;
}
try {
JPGOptions options = new JPGOptions();
options.setQuality(quality);
ImageProducer image = Jimi.getImageProducer(source);
JimiWriter writer = Jimi.createJimiWriter(dest);
writer.setSource(image);
// 加入属性设置,非必要
// /*
writer.setOptions(options);
// */
writer.putImage(dest);
OutputStream os = new ByteArrayOutputStream();
writer.putImage(os);
} catch (JimiException je) {
je.printStackTrace();
throw je;
}
}
/**
* 批量保存图片成blob格式
* @param map
* @throws Exception
*/
public void savePhotoBatch(HashMap map) throws Exception{
Connection conn = null;
Statement stmt = null;
OraclePreparedStatement pstmt = null;
Transaction tx = null;
OracleResultSet rs = null;
try{
Session session = HibernateSessionFactory.getSession();
conn = session.connection();
stmt = conn.createStatement();
tx = session.beginTransaction();
byte[] userPhotoBytes = new byte[0];
for(Iterator it = map.keySet().iterator();it.hasNext();){
String userName = (String)it.next();
String userPhotoPath = (String)map.get(userName);
if (userPhotoPath != null && !userPhotoPath.equals("")) {
File file = new File(userPhotoPath);
FileInputStream fileInputStream = new FileInputStream(file);
userPhotoBytes = new byte[fileInputStream.available()];
rs = (OracleResultSet) stmt
.executeQuery("SELECT picture FROM human_user WHERE username = '"
+ userName + "' FOR UPDATE");
if (rs.next()) {
pstmt = (OraclePreparedStatement) conn
.prepareStatement("UPDATE human_user SET picture = ? WHERE username = '"
+ userName + "'");
pstmt.setBinaryStream(1, fileInputStream, (int) file.length());
pstmt.executeUpdate();
}
fileInputStream.close();
}
}
session.flush();
tx.commit();
}catch (Exception ex) {
ex.printStackTrace();
tx.rollback();
throw new Exception(ex);
} finally {
try {
if(rs!=null){
rs.close();
}
pstmt.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
HibernateSessionFactory.closeSession();
}
}
/**
* 删除文件
* @param fileName
* @return
*/
public static boolean deleteFile(String fileName){
File file = new File(fileName);
if(file.isFile() && file.exists()){
file.delete();
return true;
}else{
return false;
}
}
/**
* 删除目录(文件夹)以及目录下的文件
* @param dir 被删除目录的文件路径
* @return 目录删除成功返回true,否则返回false
*/
public static boolean deleteDirectory(String dir){
File dirFile = new File(dir);
//如果dir对应的文件不存在,或者不是一个目录,则退出
if(!dirFile.exists() || !dirFile.isDirectory()){
return false;
}
boolean flag = true;
//删除文件夹下的所有文件(包括子目录)
File[] files = dirFile.listFiles();
for(int i=0;i<files.length;i++){
//删除子文件
if(files[i].isFile()){
flag = deleteFile(files[i].getAbsolutePath());
if(!flag){
break;
}
}
//删除子目录
else{
flag = deleteDirectory(files[i].getAbsolutePath());
if(!flag){
break;
}
}
}
if(!flag){
return false;
}
//删除当前目录
if(dirFile.delete()){
return true;
}else{
return false;
}
}
发表评论
-
解决excel文字读取错误 可能某些数字格式已丢失
2018-12-29 09:11 618ServletOutputStream ... -
struts上传下载多个文件
2015-04-30 11:24 512实例: 第一步导入包: commons-fileupload- ... -
jdcob--Could not initialize class com.jacob.com.ComThread
2015-02-27 09:00 19081--dll 文件 放在tomcat/bin 下面 ... -
ntko打印公章
2014-12-02 09:04 567//TANGER_OCX_OBJ.ActiveDocument ... -
hibernate 映射文件生成数据库表脚本
2011-03-28 16:20 865import org.hibernate.cfg.Config ... -
java换肤改变页面肤色
2011-03-02 14:05 994import java.io.IOException;impo ... -
java 过滤未登录的用户
2011-03-02 14:03 1103<filter> <filte ... -
java 在线用户统计
2011-03-02 13:47 1629web.xml <listener> ... -
java 过滤乱码
2011-03-02 13:44 947web.xml <filter> <f ... -
jacob资料
2011-02-13 23:48 1874JACOB是一个JAVA到微软的COM接口的桥梁。使用JACO ... -
hibernate 查询乱码
2010-10-06 15:12 746在使用HQL进行查询时,如果查询语句中存在中文字符,则会有乱码 ... -
java 多线程代码
2010-09-30 12:44 1489package com.jacob.activeX; imp ... -
过滤未登录的用户
2010-09-15 10:59 880package com.filter; import jav ... -
jacob操作word 解决换页问题
2010-09-13 08:17 3765package audit.pub.word; imp ... -
jacob操作word增加表格 行列
2010-08-10 09:52 2940import com.jacob.activeX.Activ ... -
jsp导出word 带图片
2010-04-12 17:28 33881.将word另存为html格式,然后将html格式的文件另存 ... -
读取blob格式图片上传到服务器目录
2010-04-12 17:21 1989//得到blob格式图片 String fileUrl = ... -
org.apache.tools包 解压缩zip 解决中文乱码 ant 版本冲突
2010-03-30 12:50 3039private void createDirectory(St ... -
java 获取文件大小
2010-03-29 14:32 15808import java.io.*; public class ... -
xml的读取分析 key value
2010-03-23 15:20 1588package com.basedata.xml; impo ...
相关推荐
要插入图片的表不是固定的,而且是批量插入很多张,还要考虑到因为图片的文件名错误,修改后要再次插入,此时应避免已经插入的重复执行操作, 浪费时间。 所以就选择先用一张临时表来暂时保存从文件系统读取的照片...
2. 图像处理:导入图片可能需要对图像进行预处理,如调整大小、转换格式等。.NET Framework或.NET Core提供了`System.Drawing`或第三方库如ImageSharp、SkiaSharp等来处理图像。 3. 数据库连接与操作:要将图片导入...
2. **批量导入图片**:批量导入图片到Oracle通常需要编程实现。可以使用PL/SQL过程,结合UTL_FILE包读取文件系统中的图片并存入BLOB列。另外,可以使用SQL*Loader或Oracle Data Pump工具,通过控制文件指定BLOB字段...
在Access中,BMP图片可以被当作二进制数据(Binary Large Object,简称BLOB)存储,通常使用OLE对象或Image字段类型来保存。 标题“ACCESS数据库读取BMP图片”暗示了我们需要关注的是如何在Access中处理图片数据。...
在MySQL数据库中,BLOB(Binary Large Object)是一种数据类型,用于存储大量的二进制数据,如图片、音频或视频文件。处理BLOB数据通常涉及到读取、写入和传输这些大对象。以下是一个Java程序的例子,展示了如何从...
例如,使用INSERT语句将图片数据插入到表中,使用SELECT语句查询特定图片,可能还会涉及到BULK INSERT等批量导入数据的命令。 8. BCP (Bulk Copy Program):如果图片数量巨大,可能需要使用BCP工具进行批量导入,以...
例如,使用Blob字段类型存储图片数据,然后利用FileOpen、FileRead和FileClose函数读取图片文件内容,最后将其转化为二进制数据传入数据库。 3. 文本和Word文档存储:对于文字内容,可以直接作为字符串存储在数据库...
标签“SQL数据库内图片导出工具”再次强调了这个工具的主要功能和应用场景,即专注于解决SQL数据库中图片数据的导入导出问题。 压缩文件“tpdc”可能是这个工具的可执行文件或者包含有工具所需的一些配置文件。在...
这通常涉及到BLOB(Binary Large Object)类型字段的使用,BLOB用于存储二进制大对象,如图片、文档或视频。在Java中,可以使用JDBC(Java Database Connectivity)来操作数据库。 在连接数据库之前,需要配置...
通过使用pgmagick,你可以轻松地在Python脚本中实现复杂的图像处理任务,比如批量转换图片格式、调整图片尺寸、添加水印、进行图像合成等。此外,pgmagick还支持异步操作,这在处理大量图像时能够显著提高效率。 在...
同时,对于大量图片的上传,可以考虑使用批量操作或队列管理,以优化用户体验和提高上传效率。此外, LeanCloud 提供了丰富的文档和示例,可以帮助开发者更深入地理解和使用其服务。 总之,通过微信小程序结合 ...