( 转载)纯Java文件操作工具,支持文件、文件夹的复制、删除、移动

 

纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
 
Java文件操作比较弱,没有文件夹的操作API,在网上搜了下,没有现成的,自己写个,算是对Java API的补充,欢迎使用!
 
不依赖第三方的包。
 
实现的原理主要是用到了递归处理。
 
package  com.asiainfo.boss.ngcs.ext.reissuemrpt.common;  

import  java.io.*;  

/** 
* 纯Java文件操作工具,支持文件、文件夹的复制、删除、移动操作。 

* @author leizhimin 2010-6-2 16:12:14 
*/
 
public   class  FileToolkit {  
         public  FileToolkit() {  
        }  

         public   static   void  main(String args[])   throws  IOException {  
//                delete(new File("C:/aaa")); 
//                copy(new File("D:\\work\\mrpt"), new File("C:\\aaa")); 
                move( new  File( "C:\\bbb"),   new  File( "C:\\ddd"));  

        }  

         /** 
         * 删除文件(夹) 
         * 
         * @param file 文件(夹) 
         */
 
         public   static   void  delete(File file) {  
                 if  (!file.exists())   return;  
                 if  (file.isFile()) {  
                        file.delete();  
                }   else  {  
                         for  (File f : file.listFiles()) {  
                                delete(f);  
                        }  
                        file.delete();  
                }  
        }  

         /** 
         * 复制文件(夹)到一个目标文件夹 
         * 
         * @param resFile             源文件(夹) 
         * @param objFolderFile 目标文件夹 
         * @throws IOException 异常时抛出 
         */
 
         public   static   void  copy(File resFile, File objFolderFile)   throws  IOException {  
                 if  (!resFile.exists())   return;  
                 if  (!objFolderFile.exists()) objFolderFile.mkdirs();  
                 if  (resFile.isFile()) {  
                        File objFile =   new  File(objFolderFile.getPath() + File.separator + resFile.getName());  
                         //复制文件到目标地 
                        InputStream ins =   new  FileInputStream(resFile);  
                        FileOutputStream outs =   new  FileOutputStream(objFile);  
                         byte[] buffer =   new   byte[1024 * 512];  
                         int  length;  
                         while  ((length = ins.read(buffer)) != -1) {  
                                outs.write(buffer, 0, length);  
                        }  
                        ins.close();  
                        outs.flush();  
                        outs.close();  
                }   else  {  
                        String objFolder = objFolderFile.getPath() + File.separator + resFile.getName();  
                        File _objFolderFile =   new  File(objFolder);  
                        _objFolderFile.mkdirs();  
                         for  (File sf : resFile.listFiles()) {  
                                copy(sf,   new  File(objFolder));  
                        }  
                }  
        }  

         /** 
         * 将文件(夹)移动到令一个文件夹 
         * 
         * @param resFile             源文件(夹) 
         * @param objFolderFile 目标文件夹 
         * @throws IOException 异常时抛出 
         */
 
         public   static   void  move(File resFile, File objFolderFile)   throws  IOException {  
                copy(resFile, objFolderFile);  
                delete(resFile);  
        }  
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.hexiang.utils; import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from local file. FIXME How to judge UTF-8 and GBK, the * correct code should be: FileReader fr = new FileReader(new * InputStreamReader(fileName, "ENCODING")); Might let the user select the * encoding would be a better idea. While reading UTF-8 files, the content * is bad when saved out. * * @param fileName - * local file name to read * @return * @throws Exception */ public static String readFileAsString(String fileName) throws Exception { String content = new String(readFileBinary(fileName)); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(String fileName, String encoding) throws Exception { String content = new String(readFileBinary(fileName), encoding); return content; } /** * 读取文件并返回为给定字符集的字符串. * @param fileName * @param encoding * @return * @throws Exception */ public static String readFileAsString(InputStream in) throws Exception { String content = new String(readFileBinary(in)); return content; } /** * Read content from local file to binary byte array. * * @param fileName - * local file name to read * @return * @throws Exception */ public static byte[] readFileBinary(String fileName) throws Exception { FileInputStream fin = new FileInputStream(fileName); return readFileBinary(fin); } /** * 从输入流读取数据为二进制字节数组. * @param streamIn * @return * @throws IOException */ public static byte[] readFileBinary(InputStream streamIn) throws IOException { BufferedInputStream in = new BufferedInputStream(streamIn); ByteArrayOutputStream out = new ByteArrayOutputStream(10240); int len; while ((len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值