package
?ifpre.web;

import
?gxdmif.GXStringUtil;

import
?java.io.DataOutputStream;
import
?java.io.File;
import
?java.io.FileOutputStream;
import
?java.io.InputStream;

import
?org.springframework.web.multipart.MultipartFile;


public
?
class
?SaveFile?
{

????
public
?
boolean
?save(String?path,?MultipartFile?file)?
throws
?Exception?
{
????????GXStringUtil?gx?
=
?
new
?GXStringUtil();
????????
boolean
?result?
=
?
false
;
????????File?dirFile?
=
null
;

????????
try
{
????????????dirFile?
=
?
new
?File(path);

????????????
if
(
!
(dirFile.exists())?
&&
?
!
(dirFile.isDirectory()))
{
????????????????
boolean
?creadok?
=
?dirFile.mkdirs();

????????????????
if
(creadok)
{
????????????????????System.out.println(
"
ok:創建文件夾成功!
"
);

????????????????}
else
{
????????????????????System.out.println(
"
err:創建文件夾失敗!
"
);????????????????????
????????????????}
????????????}
????????}
catch
(Exception?e)
{
????????????e.printStackTrace();
????????????System.out.println(e);
????????????
return
?
false
;
????????}
????????
if
?(file?
!=
?
null
?
&&
?
!
file.isEmpty())?
{
????????????String?fullPath?
=
?path?
+
?System.getProperty(
"
file.separator
"
)
????????????????????
+
?gx.netStringToGBK(file.getOriginalFilename());
????????????DataOutputStream?out?
=
?
null
;
????????????InputStream?is?
=
?
null
;

????????????
try
?
{
????????????????out?
=
?
new
?DataOutputStream(
new
?FileOutputStream(fullPath));
????????????????is?
=
?file.getInputStream();
????????????????
byte
[]?buffer?
=
?
new
?
byte
[
1024
];

????????????????
while
?(is.read(buffer)?
>
?
0
)?
{
????????????????????out.write(buffer);
????????????????}
????????????}
?
finally
?
{

????????????????
if
?(is?
!=
?
null
)?
{
????????????????????is.close();
????????????????}
????????????????
if
?(out?
!=
?
null
)?
{
????????????????????out.close();
????????????????}
????????????}
????????????result?
=
?
true
;
????????}
????????
return
?result;
????}
????
public
?
boolean
?delete(String?path,?MultipartFile?file)?
throws
?Exception?
{
????????GXStringUtil?gx?
=
?
new
?GXStringUtil();
????????
boolean
?result?
=
?
false
;

????????
if
?(file?
!=
?
null
?
&&
?
!
file.isEmpty())?
{
????????????String?fullPath?
=
?path?
+
?System.getProperty(
"
file.separator
"
)
????????????????????
+
?gx.netStringToGBK(file.getOriginalFilename());

????????????
try
?
{
????????????????File?file2?
=
?
new
?File(fullPath);
????????????????file2.delete();
????????????????result?
=
?
true
;

????????????}
?
catch
?(Exception?e)?
{
????????????????e.printStackTrace();
????????????????result?
=
?
false
;
????????????}
????????}
????????
return
?result;
????}
????

????
public
???
boolean
???deleteFolder(File???folder)???
{??
????????
boolean
?result?
=
?
false
;

????????
try
{
??????????????String???childs[]???
=
???folder.list();??

??????????????
if
???(childs???
==
???
null
???
||
???childs.length???
<=
???
0
)???
{??

????????????????????????
if
(folder.delete())
{
????????????????????????????result?
=
?
true
;
????????????????????????}
??????????????}
?
else
{

??????????????????
for
???(
int
???i???
=
???
0
;???i???
<
???childs.length;???i
++
)???
{??
??????????????????????????String???childName???
=
???childs[i];??
??????????????????????????String???childPath???
=
??
??????????????????????????????folder.getPath()???
+
???File.separator???
+
???childName;??
??????????????????????????File???filePath???
=
???
new
???File(childPath);??

??????????????????????????
if
???(filePath.exists()???
&&
???filePath.isFile())???
{?

????????????????????????????????
if
(filePath.delete())
{
????????????????????????????????????result?
=
?
true
;

????????????????????????????????}
else
{
????????????????????????????????????result?
=
?
false
;
????????????????????????????????????
break
;
????????????????????????????????}
??????????????????????????}
??

??????????????????????????
else
???
if
???(filePath.exists()???
&&
???filePath.isDirectory())???
{??

????????????????????????????????
if
(deleteFolder(filePath))
{
????????????????????????????????????result?
=
?
true
;

????????????????????????????????}
else
{
????????????????????????????????????result?
=
?
false
;
????????????????????????????????????
break
;
????????????????????????????????}
??????????????????????????}
??
??????????????????}
????????????????}
???????
??????????????folder.delete();??

??????????}
catch
(Exception?e)
{
??????????????e.printStackTrace();
??????????????result?
=
?
false
;
??????????}
????????
return
?result;
????}
}