`
comeon-liming
  • 浏览: 48219 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

常用的文件操作方法

    博客分类:
  • java
阅读更多
java 代码
  1.   
  2. import java.io.*;   
  3.   
  4. /**  
  5.  * name:FileUtil.java  
  6.  *   
  7.  * desc: 本类是文件操作实用类,提供常用的文件操作方法。  
  8.  *   
  9.  *  
  10.  */  
  11. public class FileUtil   
  12. {   
  13.     /**  
  14.      * 方法根据指定参数名创建一个空文件  
  15.      * @param filePath 文件路径名  
  16.      * @throws IOException  
  17.      */  
  18.     public static File makeFile(String filePath)throws IOException, Exception   
  19.     {   
  20.         //参数无效   
  21.         if (filePath == null || filePath.trim().length() == 0)   
  22.         {   
  23.             throw new IllegalArgumentException("argument is not valid!");   
  24.         }   
  25.         File file = new File(filePath);   
  26.         file.getParentFile().mkdirs();   
  27.         file.createNewFile();   
  28.            
  29.         //文件不存在   
  30.         if (!file.exists())   
  31.         {   
  32.             throw new Exception("create file '"  + filePath + "' failed");   
  33.         }   
  34.         return file;   
  35.     }   
  36.        
  37.     /**  
  38.      * 方法根据指定参数创建目录  
  39.      * @param path 路径名  
  40.      * @throws IOException  
  41.      * @throws Exception  
  42.      */  
  43.     public static void makeDir(String path)throws IOException, Exception   
  44.     {   
  45.         //参数无效   
  46.         if (path == null || path.trim().length() == 0)   
  47.         {   
  48.             throw new IllegalArgumentException("argument is not valid!");   
  49.         }   
  50.         File file = new File(path);   
  51.            
  52.         //目录不存在时,创建目录   
  53.         if (!file.exists())   
  54.         {   
  55.             //创建目录失败时,延时1秒再创建   
  56.             if (!file.mkdirs())   
  57.             {   
  58.                 try  
  59.                 {   
  60.                     final long sleepTime = 1000;   
  61.                     Thread.sleep(sleepTime);   
  62.                     file.mkdirs();   
  63.                 }   
  64.                 catch(InterruptedException ie)   
  65.                 {   
  66.                     file.mkdirs();   
  67.                 }   
  68.             }   
  69.         }   
  70.            
  71.         //目录创建失败   
  72.         if (!file.exists())   
  73.         {   
  74.             throw new Exception("create dir '" + path + "' failed!");    
  75.         }   
  76.     }   
  77.   
  78.     /**  
  79.      * 方法执行文件的拷贝,不支持递归拷贝  
  80.      * @param src 源文件  
  81.      * @param dest 目的文件  
  82.      * @throws IOException  
  83.      * @throws Exception  
  84.      */  
  85.     public static void copy(File src, File dest)throws IOException, Exception   
  86.     {   
  87.         //参数无效   
  88.         if (src == null || dest == null)   
  89.         {   
  90.             throw new IllegalArgumentException("argument is not valid!");   
  91.         }   
  92.            
  93.         //参数相等   
  94.         if (src.equals(dest))   
  95.         {   
  96.             throw new IllegalArgumentException("src file equals to dest file!");   
  97.         }   
  98.            
  99.         org.apache.tools.ant.util.FileUtils fileUtils =   
  100.                                     org.apache.tools.ant.util.FileUtils.newFileUtils();   
  101.            
  102.         fileUtils.copyFile(src, dest, nulltruefalse);   
  103.     }   
  104.        
  105.     /**  
  106.      * 方法执行文件的拷贝,不支持递归拷贝  
  107.      * @param src 源文件path  
  108.      * @param dest 目的文件path  
  109.      * @throws Exception  
  110.      */  
  111.     public static void copy(String src, String dest)throws Exception   
  112.     {   
  113.         File srcFile = new File(src);   
  114.         File desFile = new File(dest);   
  115.         copy(srcFile, desFile);   
  116.     }   
  117.        
  118.     /**  
  119.      * 复制整个文件夹的内容  
  120.      * @param oldPath 源目录  
  121.      * @param newPath 目的目录  
  122.      * @return  
  123.      */  
  124.     public static void copyFolder(String oldPath, String newPath)throws  
  125.         IOException, Exception   
  126.     {   
  127.         FileInputStream input = null;   
  128.         FileOutputStream output = null;   
  129. //        try   
  130. //        {   
  131.         new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件夹   
  132.         File a = new File(oldPath);   
  133.         String[] file = a.list();   
  134.         File temp = null;   
  135.         for (int i = 0; i < file.length; i++)   
  136.         {   
  137.             try  
  138.             {   
  139.                 if (oldPath.endsWith(File.separator))   
  140.                 {   
  141.                     temp = new File(oldPath + file[i]);   
  142.                 }   
  143.                 else  
  144.                 {   
  145.                     temp = new File(oldPath + File.separator + file[i]);   
  146.                 }   
  147.                 if (temp.isFile())   
  148.                 {   
  149.                     input = new FileInputStream(temp);   
  150.                     output = new FileOutputStream(newPath + File.separator   
  151.                             + temp.getName());   
  152.                     byte[] b = new byte[1024 * 5];   
  153.                     int len;   
  154.                     while ((len = input.read(b)) != -1)   
  155.                     {   
  156.                         output.write(b, 0, len);   
  157.                     }   
  158.                 }   
  159.                 // 如果是子文件夹   
  160.                 if (temp.isDirectory())   
  161.                 {   
  162.                     copyFolder(oldPath + File.separator + file[i], newPath   
  163.                             + File.separator + file[i]);   
  164.                 }   
  165.             }   
  166.             catch (Exception e)   
  167.             {   
  168.                 throw e;   
  169.             }   
  170.             finally  
  171.             {   
  172.                 try  
  173.                 {   
  174.                     if (output != null)   
  175.                     {   
  176.                         output.flush();   
  177.                         output.close();   
  178.                         output = null;   
  179.                     }   
  180.                        
  181.                     if (input != null)   
  182.                     {   
  183.                         input.close();   
  184.                         input = null;   
  185.                     }   
  186.                 }   
  187.                 catch (IOException ioe)   
  188.                 {   
  189.                     // do nothing;   
  190.                 }   
  191.   
  192.             }   
  193.         }   
  194.     }   
  195. // catch (Exception e)   
  196. // {   
  197. // throw e;   
  198. // }   
  199. // finally   
  200. // {   
  201. // try   
  202. // {   
  203. // output.flush();   
  204. // output.close();   
  205. // output = null;   
  206. // input.close();   
  207. // input = null;   
  208. // }   
  209. // catch(IOException ioe)   
  210. // {   
  211. // //do nothing;   
  212. // }   
  213. //   
  214. // }   
  215. // }   
  216.        
  217.     /**  
  218.      * 文件打包方法,完成一个tar包的创建  
  219.      *   
  220.      * @param tarFile  
  221.      *            tar包名  
  222.      * @param subFiles  
  223.      *            打包文件  
  224.      * @throws Exception  
  225.      */  
  226.     public static void tar(String tarFile, String[] subFiles)throws Exception   
  227.     {   
  228.         // 参数为空   
  229.         if (tarFile == null || subFiles == null)   
  230.         {   
  231.             throw new IllegalArgumentException("argument is null!");   
  232.         }   
  233.            
  234.         //压缩包格式不正确   
  235.         if (!tarFile.toLowerCase().endsWith(".tar"))   
  236.         {   
  237.             throw new IllegalArgumentException("must be a tar file!");   
  238.         }   
  239.         String currentPath = System.getProperty("user.dir");   
  240.         String commandPath = currentPath + File.separator + "tar";   
  241.         StringBuffer cmdBuffer = new StringBuffer(commandPath + " -cvf " + tarFile);   
  242.         for (int i = 0; i < subFiles.length; i++)   
  243.         {   
  244.             cmdBuffer.append(" " + subFiles[i]);   
  245.         }   
  246.         Process p = null;   
  247.         try  
  248.         {   
  249.             p = Runtime.getRuntime().exec(cmdBuffer.toString());   
  250.             //压缩文件失败   
  251.             if (p.waitFor() != 0)   
  252.             {   
  253.                 throw new IOException("tar -cvf " + tarFile + " failed!");   
  254.             }   
  255.         }   
  256.         //关闭输入输出流   
  257.         finally  
  258.         {   
  259.             if (p != null)   
  260.             {   
  261.                 p.getErrorStream().close();   
  262.                 p.getInputStream().close();   
  263.                 p.getOutputStream().close();   
  264.             }   
  265.         }   
  266.     }   
  267.     /**  
  268.      * 文件打包方法,完成一个tar包的创建  
  269.      *   
  270.      * @param tarFile  
  271.      *            tar包名  
  272.      * @param subFiles  
  273.      *            打包文件  
  274.      * @throws Exception  
  275.      */  
  276.     public static void tar(String commandPath, String tarFile, String[] subFiles)   
  277.     throws Exception   
  278.     {   
  279.         if (commandPath == null || tarFile == null || subFiles == null)   
  280.         {   
  281.             throw new IllegalArgumentException("argument is null!");   
  282.         }   
  283.            
  284.         if (!tarFile.toLowerCase().endsWith(".tar"))   
  285.         {   
  286.             throw new IllegalArgumentException("must be a tar file!");   
  287.         }   
  288.         commandPath = commandPath + "/tar";   
  289.         StringBuffer cmdBuffer = new StringBuffer(commandPath + " -cvf " + tarFile);   
  290.         for (int i = 0; i < subFiles.length; i++)   
  291.         {   
  292.             cmdBuffer.append(" " + subFiles[i]);   
  293.         }   
  294.         Process p = null;   
  295.         System.out.println(" command : " + cmdBuffer.toString());   
  296.         try  
  297.         {   
  298.             p = Runtime.getRuntime().exec(cmdBuffer.toString());   
  299.             if (p.waitFor() != 0)   
  300.             {   
  301.                 throw new IOException("tar -cvf " + tarFile + " failed!");   
  302.             }   
  303.         }   
  304.         finally  
  305.         {   
  306.             if (p != null)   
  307.             {   
  308.                 InputStream is = p.getErrorStream();   
  309.                 StringBuffer sb = new StringBuffer();   
  310.                 byte[] buffer = new byte[1024];   
  311.                 while (is.read(buffer, 0, buffer.length) != -1)   
  312.                 {   
  313.                     sb.append(new String(buffer));   
  314.                 }   
  315.                 System.out.println("error message: " + sb.toString());   
  316.                 p.getErrorStream().close();   
  317.                 p.getInputStream().close();   
  318.                 p.getOutputStream().close();   
  319.             }   
  320.         }   
  321.     }   
  322.        
  323.     public static void tar2(String tarFilePath, String baseDirPath)throws Exception   
  324.     {   
  325.         TarUtil tarUtil = new TarUtil();   
  326.         File tarFile = new File(tarFilePath);   
  327.         File baseDir = new File(baseDirPath);   
  328.         tarUtil.setDestFile(tarFile);   
  329.         tarUtil.setBasedir(baseDir);   
  330.         tarUtil.execute(null);   
  331.     }   
  332.        
  333.     /**  
  334.      * 文件解包方法,完成tar包的解压  
  335.      * @param tarFile tar包路径  
  336.      * @param storePath 存放路径  
  337.      * @throws Exception  
  338.      * @deprecated replaced by untar2()  
  339.      */  
  340.     public static void untar(String tarFile, String storePath)throws Exception   
  341.     {   
  342.         //参数无效   
  343.         if (tarFile == null || tarFile.trim().length() == 0)   
  344.         {   
  345.             throw new IllegalArgumentException("argument is empty!");   
  346.         }   
  347.            
  348.         //压缩包格式不正确   
  349.         if (!tarFile.toLowerCase().endsWith(".tar"))   
  350.         {   
  351.             throw new IllegalArgumentException("must be a tar file!");   
  352.         }   
  353.         String tarCommand = null;   
  354.         //默认存放路径   
  355.         if (storePath == null || storePath.trim().length() == 0)   
  356.         {   
  357.             tarCommand = "tar -xvf " + tarFile;   
  358.         }   
  359.            
  360.         //制定存放路径   
  361.         else  
  362.         {   
  363.             tarCommand = "tar -C " + storePath + " -xvf " + tarFile;   
  364.         }   
  365.         String path = System.getProperty("java.library.path");   
  366.         System.out.println("path is : " + path);   
  367.         String currentPath = System.getProperty("user.dir");   
  368.         String pathSeparator = System.getProperty("path.separator");   
  369.         System.setProperty("java.library.path", currentPath + pathSeparator + path);   
  370.         String command = tarCommand;   
  371.         Process p = null;   
  372.         try  
  373.         {   
  374.             p = Runtime.getRuntime().exec(command);   
  375.             if (p.waitFor() != 0)   
  376.             {   
  377.                 throw new IOException("tar -xvf " + tarFile + " failed!");   
  378.             }   
  379.         }   
  380.         catch (InterruptedException e)   
  381.         {   
  382.             e.printStackTrace();   
  383.         }   
  384.         //关闭输入输出流   
  385.         finally  
  386.         {   
  387.             if (p != null)   
  388.             {   
  389.                 p.getErrorStream().close(); &n
分享到:
评论

相关推荐

    基于JAVA的常用文件操作方法

    在提供的`FileUtil.java`文件中,可能包含了上述某些或全部的文件操作方法,具体实现需要查看源码才能得知。对于实际项目开发,编写一个`FileUtil`工具类是非常常见的做法,这样可以将文件操作封装起来,便于代码的...

    Ruby常用文件操作方法

    下面将详细阐述Ruby中的这些常用文件操作方法。 一、新建文件 在Ruby中,新建文件通常使用`File.new`方法。以下是一个示例: ```ruby f = File.new(File.join("C:", "Test.txt"), "w+") f.puts("I am Jack") f.puts...

    文件操作类,包含常用的文件操作方法

    封装了包括所有常用的文件操作方法如:读文件,写文件,查看文件夹大小,树状展示文件夹中文件目录,拷贝文件,复制文件,删除文件,创建文件,递归删除文件夹中文件,获取指定文件属性

    C#中常用的经典文件操作方法

    本文将深入探讨C#中经典的文件操作方法,包括文件读写、复制、删除、移动以及目录创建与删除等关键功能。 ### 文件读写 C#提供了多种类库来实现文件读写操作,其中`StreamWriter`和`StreamReader`是最常用的一对。...

    文件操作常用方法

    一些文件的常用操作 writeDate(Context context,InputStream is, File file, String charSet) getDataFromAssets(Context context,String path, String charSet) getText(Context context, String path, String ...

    Visual C# File类常用的文件操作方法

    ### Visual C# File类常用的文件操作方法 在.NET框架中,`System.IO`命名空间下的`File`类是一个非常重要的工具,它为开发者提供了多种静态方法来执行与文件相关的操作,如创建、复制、移动、删除文件等。下面将...

    C#常用的关于文件的操作方法

    在C#编程语言中,文件操作是至关重要的部分,它涉及到对本地系统文件的创建、读取、写入、删除等操作。以下是一些常用的关键知识点: 1. **文件流(FileStream)** C#中的`System.IO.FileStream`类是进行文件操作的...

    C#中常用的经典文件操作方法.doc

    ### C#中常用的经典文件操作方法 在C#编程中,对文件进行操作是非常常见的需求之一。无论是简单的读写操作还是复杂的文件管理任务,掌握基本的文件操作技巧都是必不可少的。本文将详细介绍C#中的一些经典文件操作...

    Excel-VBA操作文件四大方法

    除了利用Excel对象来处理文件之外,还可以通过VBA内置的一些文件处理语句来实现文件操作,例如使用`Open`语句读取或写入文件。这种方法适用于处理各种类型的文件,不仅仅是Excel文件。 #### 三、利用...

    《Java文件操作大全》电子书

    《Java文件操作大全》电子书 本文汇集常用文件操作方法,包括文件的建立/检查与删除,目录的建立/检查与删除,取出目录中文件,文件属性的取得,逐行读取数据等等。

    c# 编写常用文件操作

    #### 二、文件操作 ##### 1. 向文件追加文本 使用`StreamWriter`类可以方便地向文件追加内容。以下代码展示了如何打开一个文件,并在其末尾添加新的文本: ```csharp using System.IO; // 创建一个StreamWriter...

    C#常用文件操作.txt

    ### C#中的文件操作 #### 1. 写入文件 在C#中,可以通过`StreamWriter`类来实现对文本文件的追加写入。例如,下面的代码展示了如何向一个名为`myText.txt`的文件中追加文本: ```csharp using System.IO; ...

    常用文件类型图标

    以下是对“常用文件类型图标”这一主题的详细解释: 1. **文件扩展名与文件类型**:文件扩展名是文件名中点号"."后面的部分,如.txt、.docx、.pdf等。它是用来标识文件类型的关键,Windows系统根据扩展名来决定应该...

    Java文件操作方法总结

    Java文件操作中的一些常用方法的总结,可以参考参考啦!

    C# 操作文件源码_几种操作文件的方法封装

    常用的几种操作文件的方法封装 常用的几种操作文件的方法封装 常用的几种操作文件的方法封装

Global site tag (gtag.js) - Google Analytics