非常好使的FileUtil 类

 

package com.zqk.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
 * @author qeekey

 * @创建时间:2010-9-9 下午03:03:13
 * 类说明 文件处理工具类

 * Description:实现文件的简单处理,复制文件、目录等
 */


public class FileUtil {
 
 private String ENCODING ="gbk"; //字符编码
 
 /***
  * 读文件

  * @param filename
  * @return 文件内容
  * @throws Exception
  */
 public String ReadFile(String filename) throws Exception {
  StringBuffer filebuf = new StringBuffer();
  File file = new File(filename);
  if (file.isFile() && file.exists()) {
   InputStreamReader read = new InputStreamReader(new FileInputStream(file), ENCODING);
   BufferedReader in = new BufferedReader(read);
   String line1;
   while ((line1 = in.readLine()) != null) {
    filebuf.append(line1).append("\r\n");
   }
   read.close();
   in.close();
  }
  return filebuf.toString();
 }
 
 
 
 /***
  * 写文件 这种输出方法可以忽略平台目录问题,在windows linux下都可完美运行
  * @param content
  * @param filename
  * @throws Exception
  */
 public void WriteFile(String content, String filename) throws Exception {
  File file = new File(filename);
  StringBuffer jspbuff = new StringBuffer();
  jspbuff.append(content);
  OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file),ENCODING);
  out.write(jspbuff.toString());
  out.flush();
  out.close();
 }
 
 /**
  * 复制目录下的文件(不包括该目录)到指定目录,会连同子目录一起复制过去。

  * @param targetFile
  * @param path
  */
 public static void copyFileFromDir(String targetDir, String path) {
  File file = new File(path);
  createFile(targetDir, false);
  if (file.isDirectory()) {
   copyFileToDir(targetDir, listFile(file));
  }
 }

 /**
  * 复制目录下的文件(不包含该目录和子目录,只复制目录下的文件)到指定目录。

  * @param targetDir
  * @param path
  */
 public static void copyFileOnly(String targetDir, String path) {
  File file = new File(path);
  File targetFile = new File(targetDir);
  if (file.isDirectory()) {
   File[] files = file.listFiles();
   for (File subFile : files) {
    if (subFile.isFile()) {
     copyFile(targetFile, subFile);
    }
   }
  }
 }

 /**
  * 复制目录到指定目录。targetDir是目标目录,path是源目录。 该方法会将path以及path下的文件和子目录全部复制到目标目录

  * @param targetDir
  * @param path
  */
 public static void copyDir(String targetDir, String path) {
  File targetFile = new File(targetDir);
  createFile(targetFile, false);
  File file = new File(path);
  if (targetFile.isDirectory() && file.isDirectory()) {
   copyFileToDir(targetFile.getAbsolutePath() + "/" + file.getName(),
     listFile(file));
  }
 }

 /**
  * 复制一组文件到指定目录。targetDir是目标目录,filePath是需要复制的文件路径
  * @param targetDir
  * @param filePath
  */
 public static void copyFileToDir(String targetDir, String... filePath) {
  if (targetDir == null || "".equals(targetDir)) {
   System.out.println("参数错误,目标路径不能为空");
   return;
  }
  File targetFile = new File(targetDir);
  if (!targetFile.exists()) {
   targetFile.mkdir();
  } else {
   if (!targetFile.isDirectory()) {
    System.out.println("参数错误,目标路径指向的不是一个目录!");
    return;
   }
  }
  for (String path : filePath) {
   File file = new File(path);
   if (file.isDirectory()) {
    copyFileToDir(targetDir + "/" + file.getName(), listFile(file));
   } else {
    copyFileToDir(targetDir, file, "");
   }
  }
 }

 /**
  * 复制文件到指定目录。targetDir是目标目录,file是源文件名,newName是重命名的名字。

  * @param targetFile
  * @param file
  * @param newName
  */
 public static void copyFileToDir(String targetDir, File file, String newName) {
  String newFile = "";
  if (newName != null && !"".equals(newName)) {
   newFile = targetDir + "/" + newName;
  } else {
   newFile = targetDir + "/" + file.getName();
  }
  File tFile = new File(newFile);
  copyFile(tFile, file);
 }

 /**
  * 复制文件。targetFile为目标文件,file为源文件
  * @param targetFile
  * @param file
  */
 public static void copyFile(File targetFile, File file) {
  if (targetFile.exists()) {
   //System.out.println("文件" + targetFile.getAbsolutePath()+ "已经存在,删除该文件!");
   //return;
   targetFile.delete();
  }
  
  createFile(targetFile, true);
  
  //System.out.println("复制文件" + file.getAbsolutePath() + "到" + targetFile.getAbsolutePath());
  
  try {
   int bytesum = 0;
         int byteread = 0;
   InputStream inStream = new FileInputStream(file); //读入原文件
            FileOutputStream fs = new FileOutputStream(targetFile);
            byte[] buffer = new byte[1024];
            while ( (byteread = inStream.read(buffer)) != -1) {
                bytesum += byteread; //字节数 文件大小
                fs.write(buffer, 0, byteread);
            }
            inStream.close();
         
            /*
   InputStream is = new FileInputStream(file);
   FileOutputStream fos = new FileOutputStream(targetFile);
   byte[] buffer = new byte[1024];
   while (is.read(buffer) != -1) {
    fos.write(buffer);
   }
   is.close();
   fos.close();
   */
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static String[] listFile(File dir) {
  String absolutPath = dir.getAbsolutePath();
  String[] paths = dir.list();
  String[] files = new String[paths.length];
  for (int i = 0; i < paths.length; i++) {
   files[i] = absolutPath + "/" + paths[i];
  }
  return files;
 }

 public static void createFile(String path, boolean isFile) {
  createFile(new File(path), isFile);
 }

 public static void createFile(File file, boolean isFile) {
  if (!file.exists()) {
   if (!file.getParentFile().exists()) {
    createFile(file.getParentFile(), false);
   } else {
    if (isFile) {
     try {
      file.createNewFile();
     } catch (IOException e) {
      e.printStackTrace();
     }
    } else {
     file.mkdir();
    }
   }
  }
 }
 
 public static void deleteDir(File dir) {
  if (dir == null || !dir.exists() || !dir.isDirectory())
   return; // 检查参数
  for (File file : dir.listFiles()) {
   if (file.isFile())
    file.delete(); // 删除所有文件
   else if (file.isDirectory())
    deleteDir(file); // 递规的方式删除文件夹
  }
  dir.delete();// 删除目录本身
 }
 
 
 /***
  * 写文件 , 这种输出方法可以忽略平台目录问题,在windows linux下都可完美运行
  * @param content
  * @param filename
  * @throws Exception
  */
 public static void WriteFile(byte[] content, String filename)  {
  File file = new File(filename);
  try {
   FileOutputStream fos = new FileOutputStream( filename );
   try {
    fos.write(content);
    fos.flush();
    fos.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值