Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
adaptation-master
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
adaptation-master
Commits
ddccadf2
提交
ddccadf2
authored
12月 23, 2019
作者:
wyl
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of 192.168.1.249:ty_wyl/adaptation-master1 into wyl
上级
2d12d36f
00536ec1
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
161 行增加
和
0 行删除
+161
-0
ProjectController.java
...daptationmaster/adaptor/controller/ProjectController.java
+5
-0
ProjectServiceImpl.java
...tationmaster/adaptor/service/Impl/ProjectServiceImpl.java
+17
-0
ProjectService.java
...zjty/adaptationmaster/adaptor/service/ProjectService.java
+2
-0
ZipUtils.java
src/main/java/com/zjty/adaptationmaster/utils/ZipUtils.java
+137
-0
没有找到文件。
src/main/java/com/zjty/adaptationmaster/adaptor/controller/ProjectController.java
浏览文件 @
ddccadf2
...
...
@@ -48,4 +48,9 @@ public class ProjectController {
return
projectService
.
deployList
();
}
@PostMapping
(
"/downLoad"
)
public
ServerResponse
downLoad
(
@RequestBody
Project
project
){
return
projectService
.
downLoad
(
project
);
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/ProjectServiceImpl.java
浏览文件 @
ddccadf2
...
...
@@ -10,6 +10,7 @@ import com.zjty.adaptationmaster.adaptor.service.ProjectService;
import
com.zjty.adaptationmaster.base.enums.Const
;
import
com.zjty.adaptationmaster.base.response.ServerResponse
;
import
com.zjty.adaptationmaster.utils.ApusicDeployer
;
import
com.zjty.adaptationmaster.utils.ZipUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
...
...
@@ -18,6 +19,9 @@ import org.springframework.data.jpa.domain.Specification;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.FileOutputStream
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -106,4 +110,17 @@ public class ProjectServiceImpl implements ProjectService {
public
ServerResponse
deployList
()
{
return
ServerResponse
.
success
(
new
ApusicDeployer
(
Const
.
CTLPATH
,
Const
.
MAVENHOME
).
list
());
}
@Override
public
ServerResponse
downLoad
(
Project
project
)
{
try
{
String
projectName
=
project
.
getProjectName
();
FileOutputStream
zip
=
new
FileOutputStream
(
new
File
(
project
.
getCodeUrl
()+
"/"
+
projectName
+
".zip"
));
ZipUtils
.
toZip
(
project
.
getCodeUrl
(),
zip
,
true
);
return
ServerResponse
.
success
(
"下载成功"
,
"/uploads/"
+
projectName
+
"/"
+
projectName
+
".zip"
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
return
ServerResponse
.
error
(
"下载失败"
);
}
}
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/ProjectService.java
浏览文件 @
ddccadf2
...
...
@@ -18,4 +18,6 @@ public interface ProjectService {
ServerResponse
findProject
(
Integer
page
,
Project
project
);
//查询项目
ServerResponse
deployList
();
ServerResponse
downLoad
(
Project
project
);
//下载代码
}
src/main/java/com/zjty/adaptationmaster/utils/ZipUtils.java
0 → 100644
浏览文件 @
ddccadf2
package
com
.
zjty
.
adaptationmaster
.
utils
;
import
java.io.*
;
import
java.util.List
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipOutputStream
;
public
class
ZipUtils
{
private
static
final
int
BUFFER_SIZE
=
2
*
1024
;
/**
* 压缩成ZIP 方法 * @param srcDir 压缩文件夹路径
* @param out 压缩文件输出流
* @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构;
* false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
* @throws RuntimeException 压缩失败会抛出运行时异常
*/
public
static
void
toZip
(
String
srcDir
,
OutputStream
out
,
boolean
KeepDirStructure
)
throws
RuntimeException
{
long
start
=
System
.
currentTimeMillis
();
ZipOutputStream
zos
=
null
;
try
{
zos
=
new
ZipOutputStream
(
out
);
File
sourceFile
=
new
File
(
srcDir
);
compress
(
sourceFile
,
zos
,
sourceFile
.
getName
(),
KeepDirStructure
);
long
end
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"压缩完成,耗时:"
+
(
end
-
start
)
+
" ms"
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"zip error from ZipUtils"
,
e
);
}
finally
{
if
(
zos
!=
null
){
try
{
zos
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
/**
* 压缩成ZIP 方法 * @param srcFiles 需要压缩的文件列表
* @param out 压缩文件输出流
* @throws RuntimeException 压缩失败会抛出运行时异常
*/
public
static
void
toZip
(
List
<
File
>
srcFiles
,
OutputStream
out
)
throws
RuntimeException
{
long
start
=
System
.
currentTimeMillis
();
ZipOutputStream
zos
=
null
;
try
{
zos
=
new
ZipOutputStream
(
out
);
for
(
File
srcFile
:
srcFiles
)
{
byte
[]
buf
=
new
byte
[
BUFFER_SIZE
];
zos
.
putNextEntry
(
new
ZipEntry
(
srcFile
.
getName
()));
int
len
;
FileInputStream
in
=
new
FileInputStream
(
srcFile
);
while
((
len
=
in
.
read
(
buf
))
!=
-
1
){
zos
.
write
(
buf
,
0
,
len
);
}
zos
.
closeEntry
();
in
.
close
();
}
long
end
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"压缩完成,耗时:"
+
(
end
-
start
)
+
" ms"
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"zip error from ZipUtils"
,
e
);
}
finally
{
if
(
zos
!=
null
){
try
{
zos
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
}
/**
* 递归压缩方法
* @param sourceFile 源文件
* @param zos zip输出流
* @param name 压缩后的名称
* @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构;
* false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
* @throws Exception
*/
private
static
void
compress
(
File
sourceFile
,
ZipOutputStream
zos
,
String
name
,
boolean
KeepDirStructure
)
throws
Exception
{
byte
[]
buf
=
new
byte
[
BUFFER_SIZE
];
if
(
sourceFile
.
isFile
()){
// 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
zos
.
putNextEntry
(
new
ZipEntry
(
name
));
// copy文件到zip输出流中
int
len
;
FileInputStream
in
=
new
FileInputStream
(
sourceFile
);
while
((
len
=
in
.
read
(
buf
))
!=
-
1
){
zos
.
write
(
buf
,
0
,
len
);
}
// Complete the entry
zos
.
closeEntry
();
in
.
close
();
}
else
{
//是文件夹
File
[]
listFiles
=
sourceFile
.
listFiles
();
if
(
listFiles
==
null
||
listFiles
.
length
==
0
){
// 需要保留原来的文件结构时,需要对空文件夹进行处理
if
(
KeepDirStructure
){
// 空文件夹的处理
zos
.
putNextEntry
(
new
ZipEntry
(
name
+
"/"
));
// 没有文件,不需要文件的copy
zos
.
closeEntry
();
}
}
else
{
for
(
File
file
:
listFiles
)
{
// 判断是否需要保留原来的文件结构
if
(
KeepDirStructure
)
{
// 注意:file.getName()前面需要带上父文件夹的名字加一斜杠,
// 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了
compress
(
file
,
zos
,
name
+
"/"
+
file
.
getName
(),
KeepDirStructure
);
}
else
{
compress
(
file
,
zos
,
file
.
getName
(),
KeepDirStructure
);
}
}
}
}
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
/** 测试压缩方法 */
FileOutputStream
fos1
=
new
FileOutputStream
(
new
File
(
"C:\\Users\\xiaoge\\Desktop\\领导.zip"
));
ZipUtils
.
toZip
(
"C:\\Users\\xiaoge\\Desktop\\右侧\\领导"
,
fos1
,
true
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论