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

}