- 浏览: 1524791 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; //网上说使用ant.jar包中的类就可以解决中文问题,但我试了,一样是乱码! //import org.apache.tools.zip.ZipEntry; //import org.apache.tools.zip.ZipOutputStream; public class Test { /** 拷贝(复制) */ public static final int ACTION_COPY = 2; /** 压缩 */ public static final int ACTION_GZIP = 1; public static void main(String[] args) throws Exception { String sourcePath = "C:\\Program Files\\MySQL\\MySQL Server 5.0\\data\\papazo"; String aimPath = "C:\\papazo_data"; List<String> filtDir = new ArrayList<String>(); filtDir.add(".svn"); List<String> filtFiles = new ArrayList<String>(); filtFiles.add("Thumbs.db"); backup(sourcePath, aimPath, filtDir, filtFiles, 1); // System.out.println(getSubDirectory(sourcePath, subsourcePath)); } /** * @param sourcePath * 要备份的目录 * @param aimPath * 存放备份的目录 * @param filtDir * 要过滤的目录列表 * @param filtFiles * 要过滤的文件列表 * @param actionType * 执行备份类型 1:GZIP压缩方式,非1值为拷贝 * @throws Exception */ public static void backup(String sourcePath, String aimPath, List<String> filtDir, List<String> filtFiles, int actionType) throws Exception { SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd-hh-mm-ss"); String datePath = dateFormat.format(new Date()); switch (actionType) { case 1: aimPath = buildPath(aimPath); OutputStream os = new FileOutputStream(aimPath + datePath + ".zip"); BufferedOutputStream bs = new BufferedOutputStream(os); ZipOutputStream zo = new ZipOutputStream(bs); deepGzipDir(sourcePath, sourcePath, zo, filtDir, filtFiles); zo.closeEntry(); zo.close(); break; default: deepCopyDir(sourcePath, aimPath + "/" + datePath + "/", filtDir, filtFiles); break; } } /** * 压缩指定的目录,进行备份 * * @param sourcePath * 要压缩的目录 * @param aimPath * 目标目录(即存放备份的目录,备份文件按日期时间来生成.) * @param gzipFileName * 备份文件的文件名 * @param filtDir * 过滤要备份的目录 * @param filtFiles * 过滤要备份的文件 * @throws Exception */ public static void deepGzipDir(String sourcePath, String basePath, ZipOutputStream zo, List<String> filtDir, List<String> filtFiles) throws Exception { File inFile = new File(sourcePath); File[] files = null; if (inFile.isDirectory()) { // 是目录 files = inFile.listFiles(); } else if (inFile.isFile()) { // 是文件 files = new File[1]; files[0] = inFile; } byte[] buf = new byte[1024]; int len; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { if (filtDir != null && filtDir.size() > 0 && filtDir.contains(files[i].getName())) {// 过滤目录 // 不对该名称的目录进行拷贝 continue; } zo.putNextEntry(new ZipEntry(getSubDirectory(basePath, files[i] .getPath() + "/"))); // 可以使空目录也放进去 deepGzipDir(files[i].getPath(), basePath, zo, filtDir, filtFiles); } else { if (filtFiles != null && filtFiles.size() > 0 && filtFiles.contains(files[i].getName())) {// 过滤文件 // 不对该名称的文件进行拷贝 continue; } FileInputStream fin = new FileInputStream(files[i]); zo.putNextEntry(new ZipEntry(getSubDirectory(basePath, files[i] .getPath()))); while ((len = fin.read(buf)) > 0) { zo.write(buf, 0, len); } fin.close(); } } } /** * @param root * 根目录 * @param subDirectoryPath * 子目录的全路径 * @return * @throws Exception */ public static String getSubDirectory(String root, String subDirectoryPath) throws Exception { String subpath; root = root.replace("\\", "/"); subDirectoryPath = subDirectoryPath.replace("\\", "/"); subpath = subDirectoryPath.substring(root.length() + 1); return subpath; } /** * 创建目录 * * @param path * @return * @throws Exception */ public static String buildPath(String path) throws Exception { if (!path.endsWith("/") && !path.endsWith("\\")) { path += "/"; } File aim = new File(path); if (!aim.exists()) {// 不存在就创建目录 aim.mkdirs(); } return path; } /** * @param sourcePath * 源目录(要复制的目录) * @param aimPath * 目标目录,目标目录按日期时间来生成 * @throws Exception */ public static void deepCopyDir(String sourcePath, String aimPath, List<String> filtDir, List<String> filtFiles) throws Exception { File root = new File(sourcePath); File files[] = null; aimPath = buildPath(aimPath); String relativePath = ""; if (root.isDirectory()) { files = root.listFiles(); for (int i = 0; i < files.length; i++) { relativePath = files[i].getName(); if (files[i].isDirectory()) {// 读取子目录 if (filtDir != null && filtDir.size() > 0 && filtDir.contains(files[i].getName())) {// 过滤目录 // 不对该名称的目录进行拷贝 continue; } deepCopyDir(files[i].getPath(), aimPath + relativePath, filtDir, filtFiles); } else if (files[i].isFile()) { if (filtFiles != null && filtFiles.size() > 0 && filtFiles.contains(files[i].getName())) {// 过滤文件 // 不对该名称的文件进行拷贝 continue; } copyFile(files[i].getPath(), aimPath); } } } else if (root.isFile()) { copyFile(sourcePath, aimPath); } } /** * 拷贝文件到指定的目录 * * @param sourcePath * 要拷贝的文件,如:c:\\a.txt * @param aimPath * 目标目录,如:C:\\b或c:\\b\\ * @throws Exception */ public static void copyFile(String sourcePath, String aimPath) throws Exception { File inputFile = new File(sourcePath); String fileName = inputFile.getName(); FileInputStream inputStream = new FileInputStream(inputFile); File outputFile = new File(aimPath); if (!outputFile.exists()) { outputFile.mkdirs(); } if (!aimPath.endsWith("/") && !aimPath.endsWith("\\")) { aimPath += "/"; } FileOutputStream outputStream = new FileOutputStream(aimPath + fileName); byte b[] = new byte[inputStream.available()]; inputStream.read(b); outputStream.write(b); outputStream.flush(); outputStream.close(); inputStream.close(); } }
发表评论
-
HttpRequestClient
2018-11-21 17:45 594http请求工具 public class WebCon ... -
Spring boot 环境下配置CKEditor添加google map
2017-07-05 14:39 1254本文档基于已经搭建好基础ckeditor的环境上。如:ht ... -
post json
2015-12-30 12:35 536方法一: public static String doP ... -
maven打包成可执行的jar包(package a runnable jar)
2015-04-23 22:01 2216第一步:利用maven-jar-plugin生成当前工程的 ... -
自定义ObjectMapper
2015-03-02 16:57 7762d import java.io.IOExcept ... -
JsonObjectMapper
2015-02-05 10:41 1393import com.fasterxml.jackson. ... -
HttpServletRequestWrapper
2014-10-12 08:15 589请求提交后替换HTML字符 import javax.s ... -
配置javamelody
2014-09-12 14:03 1273参考后面地址修改整理。http://my.oschina.n ... -
getTrace()
2014-08-06 09:14 560/** * 将e.printStackTrace() ... -
获取java对象在内存的地址
2014-07-28 14:59 2863引用stackflow的文章:http://stackove ... -
JMeter入门:Java Request实例
2014-05-08 15:41 2346转自:http://softtest.chin ... -
解决在IE下下载时文件名乱码
2014-01-09 11:24 1053String agent = request.getHead ... -
第一节:编译自定义的Hadoop核心包,去除用户权限检查
2013-11-30 11:59 1062本文参考eclipse连接远程hadoop集群开发时0700 ... -
第二节:win 7下编译eclispe hadoop plugin
2013-11-29 19:12 832本文参照后面地址的Linux编译方式:http: ... -
使用log4j为Tomcat输出日志
2013-11-01 16:42 10339转自:http://hi.baidu.com/y ... -
xStream开发HTTP的XML内容
2013-07-03 09:58 10531、编写自定义XPPDriver代码: package ... -
HttpURLConnection or URLConnection post xml content to web server
2013-05-31 01:56 2058客户端示例1: package client; ... -
java nio学习笔记
2013-03-21 21:41 0直接缓冲区被用于与通道和固有I/O例程交互。它们 ... -
Jsch使用
2012-12-10 17:07 2543Jsch shell模式下的代码示例: 参考: ... -
Exe4j破解_Exe4j注册码
2012-12-06 17:35 33550exe4j是个很好的打包利器,官方下载地址:http://ww ...
相关推荐
3. **压缩备份**: 使用`| gzip`或`> backup.sql.gz`可以在备份时直接压缩文件,节省存储空间。 4. **日志备份**: 如果需要备份二进制日志(binlog),可以加上`--master-data`选项。 5. **排除表**: 使用`--ignore-...
9. **压缩与加密**:备份文件可能非常大,为了节省存储空间和提高传输效率,可以使用Java的`java.util.zip`包对备份文件进行压缩(如ZIP或GZIP格式)。另外,为了保护数据安全,还可以对备份文件进行加密,Java提供...
- **加密与压缩**:为了保护数据安全,备份文件可能需要进行加密处理,并且可以使用如gzip或zip进行压缩,减少存储空间。 综上所述,提供的Java代码片段实现了跨平台的MySQL数据库备份功能,结合了操作系统API调用...
10. **归档与备份**:在备份场景中,使用`tar`和`gzip`组合是常见做法,因为它可以将大量文件打包成一个可移动、可压缩的档案,便于存储和恢复。 11. **软件开发中的gzip**:在编程中,gzip常用于网络数据传输的...
Java的java.util.zip包提供了GZIPOutputStream或ZipOutputStream类,可以用来对文件进行GZIP或ZIP压缩。 7. **日志记录**:为了追踪备份过程,良好的实践是记录备份操作的日志,包括开始时间、结束时间、成功/失败...
在Java编程环境中,处理压缩文件如.tar.gz是常见的任务,特别是在数据传输、备份或软件部署等场景。`.tar`是一个打包文件格式,用于将多个文件和目录组合到一个单一的档案文件中,而`.gz`是Gzip压缩算法的扩展名,...
例如,`prop.properties`可能包含一个字段来指定备份文件保存的位置,或者一个开关来决定是否对备份文件进行gzip压缩以节省存储空间。 在实际应用中,为了保证数据一致性,可能还需要在备份开始前锁定表,或者使用...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...
HBase支持在RegionServer级别启用压缩,同时备份时也可以使用gzip或bzip2等压缩工具。 接下来是MySQL,这是一个广泛使用的SQL关系型数据库。MySQL备份包括: 1. **mysqldump**:这是最常用的全量备份方法,通过...
在Java编程语言中,处理文件压缩与解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java实现文件和文件夹的压缩以及解压缩功能。 首先,Java标准库提供了`java.util.zip`包,...
除了ZIP格式,Java还支持GZIP格式,这是另一种常见的压缩格式。`GZIPOutputStream`和`GZIPInputStream`可以用来实现GZIP压缩和解压缩。GZIP格式通常用于压缩单个文件,而不是多个文件的集合,因此其使用场景略有不同...
MiGz是一个专门为Java开发者设计的强大工具,它提供了一个高效且多线程的解决方案,用于进行gzip兼容的压缩和解压缩操作。作为一个独立于平台的Java库,MiGz可以在任何支持Java的环境中运行,这得益于Java的“一次...
Tar是一种在Unix和类Unix系统中广泛使用的打包工具,它可以将多个文件和目录打包成一个单一的归档文件,便于存储、备份和传输。在Java中处理tar文件,我们可以借助特定的库,比如题目中提到的javatar.jar包。 Java...
总的来说,Java版的MySQL备份恢复工具为数据库管理员提供了便捷的备份和恢复解决方案,尤其适用于那些希望避免命令行操作或者需要在多台机器上快速部署的用户。正确使用这类工具,可以有效降低数据丢失的风险,确保...
7. **GZIPOutputStream 和 GZIPInputStream**: Java标准库还提供了处理GZIP格式的类,GZIPOutputStream用于压缩数据到GZIP文件,而GZIPInputStream则用于解压缩GZIP文件。虽然GZIP格式不支持多文件压缩,但它们在...
Java内置了对ZIP和GZIP格式的支持,可以方便地实现文件或文件夹的压缩与解压缩。这在数据传输、备份和存储优化方面有着广泛的应用。 5. 绘制3D饼图、柱图、甘特图: Java的JavaFX和JFreeChart库提供了丰富的图表...
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...
在实际应用中,Java的压缩和解压缩功能广泛应用于数据备份、文件传输、软件安装包制作等领域。例如,开发Web应用程序时,可能会使用压缩技术来减少HTTP请求的大小,提高页面加载速度。在大数据处理中,压缩可以有效...
在Java编程语言中,文件的压缩与解压缩是常见的任务,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本资源"JAVA开发JAVA文件压缩与解压缩实践(源代码+论文)"提供了一套完整的实践教程,包含了源代码实现和...