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;
????}

}