在java程序中怎样在磁盘上创建目录和删除目录

import   java.io.*;     import   java.util.*;         public   class   FileOperator     {             public   FileOperator()   {   }                         /**             *     功 能:   移动文件(只能移动文件)             *     参 数:   strSourceFileName:指定的文件全路径名             *                     strDestDir:               移动到指定的文件夹             *     返回值:   如果成功true;否则false             */             public   boolean   copyTo(String   strSourceFileName,                                                           String   strDestDir)             {                     File   fileSource   =   new   File(strSourceFileName);                     File   fileDest       =   new   File(strDestDir);                                         //   如果源文件不存或源文件是文件夹                     if   (!fileSource.exists()   ||   !fileSource.isFile())   {                             System.out.println("错误:   FileOperator.java   copyTo函数,/n原因:   源文件["   +   strSourceFileName   +   "],不存在或是文件夹!");                             return   false;                     }                                         //   如果目标文件夹不存在                     if   (!fileDest.isDirectory()   ||   !fileDest.exists())   {                             if   (!fileDest.mkdirs())   {                                     System.out.println("错误:   FileOperator.java   copyTo函数,/n原因:目录文件夹不存,在创建目标文件夹时失败!");                                     return   false;                             }                     }                                         try   {                             String   strAbsFilename   =   strDestDir   +   File.separator   +   fileSource.getName();                                                         FileInputStream           fileInput     =   new   FileInputStream(strSourceFileName);                             FileOutputStream         fileOutput   =   new   FileOutputStream(strAbsFilename);                                                         //System.out.println("开始拷贝文件:");                                                         int           i                       =   0;                             int           count               =   -1;                                                         long         nWriteSize     =   0;                             long         nFileSize       =   fileSource.length();                                                         byte[]     data                 =   new   byte[BUFFER];                                                         //System.out.println("FILE   NAME   /t/t   FILE   SIZE");                             System.out.println(fileSource.getName()   +   "/t/t"   +   nFileSize   +   "   byte");                                                         while   (-1   !=   (count   =   fileInput.read(data,   0,   BUFFER)))   {                                                                     fileOutput.write(data,   0,   count);                                                                         nWriteSize   +=   count;                                                                         long   size       =   (nWriteSize   *   100)/nFileSize;                                     long   t             =   nWriteSize;                                                                         String   msg   =   null;                                                                         if   (size   <=   100   &&   size   >=   0)   {                                             msg   =   "/r拷贝文件进度:   "   +   size   +   "%   /t"   +   "/t   已拷贝:   "   +   t;                                             System.out.print(msg);                                     }   else   if   (size   >   100)   {                                             msg   =   "/r拷贝文件进度:   "   +   100   +   "%   /t"   +   "/t   已拷贝:   "   +   t;                                             System.out.print(msg);                                     }                                                             }                                                         fileInput.close();                             fileOutput.close();                                                         System.out.println("/n拷贝文件成功!");                             return   true;                                                 }   catch(Exception   e)   {    System.out.println("异常 信息 :[");                             e.printStackTrace();                             System.out.println("异常信息:]");                             return   false;                     }             }                         /**             *   功     能:   删除指定的文件             *   参     数:   指定绝对路径的文件名   strFileName             *   返回值:   如果删除成功true否则false;             */             public   boolean   delete(String   strFileName)             {                     File   fileDelete   =   new   File(strFileName);                                         if   (!fileDelete.exists()   ||   !fileDelete.isFile())   {                             System.out.println("错误:   "   +   strFileName   +   "不存在!");                             return   false;                     }                                         return   fileDelete.delete();             }                         /**               *     功 能:   移动文件(只能移动文件)               *     参 数:   strSourceFileName:     是指定的文件全路径名               *                     strDestDir:                   移动到指定的文件夹中               *     返回值:   如果成功true;               否则false               */             public   boolean   moveFile(String   strSourceFileName,                                                               String   strDestDir)             {                     if   (copyTo(strSourceFileName,   strDestDir))                             return   this.delete(strSourceFileName);                     else                             return   false;             }                         /**               *     功 能:   创建文件夹               *     参 数:   strDir             要创建的文件夹名称               *     返回值:   如果成功true;否则false               */             public   boolean   makedir(String   strDir)             {                     File   fileNew   =   new   File(strDir);                                         if   (!fileNew.exists())                             return   fileNew.mkdirs();                     else                             return   true;             }                         /**               *     功 能:   删除文件夹               *     参 数:   strDir             要删除的文件夹名称               *     返回值:   如果成功true;否则false               */             public   boolean   rmdir(String   strDir)             {                     File   rmDir   =   new   File(strDir);                     if   (rmDir.isDirectory()   &&   rmDir.exists())   {                             String[]   fileList       =   rmDir.list();                                                         int             size               =   fileList.length;                             for   (int   i   =   0;   i   <   fileList.length;   i++)   {                                     String     subFile   =   strDir   +   File.separator   +   fileList[i];                                     File         tmp           =   new   File(subFile);                                     if   (tmp.isFile())                       tmp.delete();                                       else   if   (tmp.isDirectory())   rmdir(subFile);                                     else                                                 System.out.println("error!");                             }                             rmDir.delete();                     }   else   return   false;                     return   true;             }                                 //   member   variable                         private   final   int   BUFFER   =   1024;                         //   member   variable     }         class   Test     {             public   static   void   main(String[]   args)             {                 }     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以使用Java的ZipOutputStream和FileInputStream等类来实现。具体步骤如下: 1. 首先定义要压缩的文件夹的路径和压缩包的路径,可以使用File类来进行操作。 ```java String folderPath = "/path/to/folder"; String zipPath = "/path/to/zipfile.zip"; File folder = new File(folderPath); File zipfile = new File(zipPath); ``` 2. 创建ZipOutputStream对象,并将其与FileOutputStream对象关联起来,以便将压缩包写入磁盘。 ```java ZipOutputStream zipout = new ZipOutputStream(new FileOutputStream(zipfile)); ``` 3. 遍历文件夹的所有文件和子文件夹,将每个文件逐个压缩到压缩包。 ```java ZipEntry entry = null; byte[] buffer = new byte[1024]; for(File file : folder.listFiles()) { FileInputStream fis = new FileInputStream(file); entry = new ZipEntry(file.getName()); zipout.putNextEntry(entry); int len; while((len = fis.read(buffer)) > 0) { zipout.write(buffer, 0, len); } fis.close(); zipout.closeEntry(); } ``` 4. 压缩完成后关闭ZipOutputStream对象和FileOutputStream对象,删除原始文件夹和压缩包。 ```java zipout.close(); FileUtils.deleteDirectory(folder); zipfile.delete(); ``` 其FileUtils.deleteDirectory()是Apache Commons IO库的方法,可以删除整个文件夹及其子文件夹和文件。需要引入该库才能使用。 完整代码如下: ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.apache.commons.io.FileUtils; public class ZipFolder { public static void main(String[] args) throws Exception { String folderPath = "/path/to/folder"; String zipPath = "/path/to/zipfile.zip"; File folder = new File(folderPath); File zipfile = new File(zipPath); ZipOutputStream zipout = new ZipOutputStream(new FileOutputStream(zipfile)); ZipEntry entry = null; byte[] buffer = new byte[1024]; for(File file : folder.listFiles()) { FileInputStream fis = new FileInputStream(file); entry = new ZipEntry(file.getName()); zipout.putNextEntry(entry); int len; while((len = fis.read(buffer)) > 0) { zipout.write(buffer, 0, len); } fis.close(); zipout.closeEntry(); } zipout.close(); // 删除文件夹和压缩包 FileUtils.deleteDirectory(folder); zipfile.delete(); } } ``` 注意事项: 1. 需要引入import org.apache.commons.io.FileUtils;,以及在编译时加入Apache Commons IO库的jar包。 2. 为了确保程序的安全性,需要在删除文件夹和压缩包之前,确保压缩包已经成功写入磁盘,否则可能会出现数据丢失的情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值