`

非常好使的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();
  }
 }
}

分享到:
评论

相关推荐

    java 文件操作类

    在Java编程语言中,文件操作是非常基础且重要的一个部分。`java.io`包提供了大量的类来处理文件,其中最常用的就是`File`类。...熟练掌握`File`类和`FileUtil`类的使用,将使你在Java开发中事半功倍。

    C++文件操作工具类

    使用这样的工具类可以使代码更加简洁、易维护,同时减少出错的可能性。由于这个工具类是从网上收集的,可能包含了其他开发者的经验和优化,因此在使用前应仔细研究其源码,了解其工作原理和限制。 在实际项目中,...

    Java工具类合集

    Spring框架中的工具类可以帮助开发者更好地利用框架功能,如`BeanUtils`类用于Bean对象之间的属性复制,`ClassPathXmlApplicationContext`用于加载和管理Spring配置文件,还有`StringUtils`等Apache Commons Lang库...

    第4章 实用类+ppt+pdf+例子

    4. **IO操作**:如FileUtil类,包含读写文件、目录操作等实用方法。 通过学习这一章的内容,开发者不仅可以提升代码质量,还能更好地组织和复用代码,使程序更易于维护和扩展。记住,一个好的实用类应该易于理解和...

    hutool一个Java基础工具类

    Hutool提供了FileUtil工具类,支持文件的创建、删除、复制、移动等基本操作,还包含了文件的读写、查找、遍历等功能。例如,你可以轻松实现文件的复制: ```java FileUtil.copy(new File("源文件路径"), new File(...

    java 工具类

    文件操作在Java中是非常常见的需求,因此了解`FileUtil`类的实现可以帮助我们更好地管理项目中的文件资源。以下是一些可能包含在`FileUtil`类中的关键知识点: 1. **文件创建与删除**: - `createFile(String ...

    commons工具集

    Apache Commons是Java世界里一个非常重要的组件集合,它提供了大量的实用工具类,极大地简化了开发工作,提高了代码的可重用性和效率。 1. **Apache Commons介绍**: Apache Commons是Apache软件基金会的一个子...

    毕业设计JSP实现的简单旅游管理系统的设计(源代码+论文).zip

    5. **文件操作工具**:FileUtil类提供了对文件的读写、创建、删除等操作,有助于系统管理和维护资源,如存储用户上传的文件或系统配置文件。 6. **哈希表测试**:HashTableTest类可能是用于测试数据结构效率的,...

    java工具包

    具体到`resource`解压到本地,这可能是Hutool提供了文件操作相关的工具,例如`FileUtil`类,能够帮助开发者方便地进行文件的读写、复制、删除、解压缩等操作。对于学习者来说,这不仅是一个使用工具,也是一个学习...

    基于Java的源码-Hutool (Java基础工具类).zip

    Hutool遵循"Single Responsibility Principle"(单一职责原则)和"Keep It Simple, Stupid"(保持简洁)的设计理念,每个工具类只做一件事,且做得足够好。 5. **实战应用** 在实际开发中,Hutool可以用于快速...

    android工具集(lib包)

    `FileUtil`类可能包括读写文件、创建删除目录、文件流转换等功能。 5. **权限管理**:随着Android版本的更新,权限管理越来越复杂。`PermissionUtil`可能提供了一种简单的方式来请求和处理运行时权限。 6. **设备...

    Hutool+Wiki.zip

    《Hutool工具类官方文档全面解析》 Hutool是一个强大的Java工具包,它旨在简化常见的开发任务,提供了一套简洁、易用的API,让...在实际应用中,结合官方文档的指导,可以更好地利用Hutool来优化代码,提升项目质量。

    java图片上传源代码

    数据返回 json 网页开发”意味着此项目利用了Struts2的Action类来处理上传请求,并且返回的数据格式是JSON,这对于现代Web应用的异步更新非常有用。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    基于PHP的工具包 一些操作封装.zip

    这个压缩包可能包含了一系列已经预封装好的函数或类,方便开发者在自己的项目中直接调用,避免重复造轮子。 【描述】:“基于PHP的工具包 一些操作封装.zip”的描述虽然简洁,但暗示了它可能包含了对文件操作、...

    框架、组件、插件、控件中间件概念及区别

    例如`FileUtil`和`XMLUtil`等工具类,它们通常提供了一组通用的功能,可以被其他应用程序调用。类库的主要特点在于其灵活性和可重用性,开发者可以根据需求选择性地使用这些类来扩展应用程序的功能。 2. **组件** ...

    Hutool JAVA基础工具包 v4.5.8

    例如,`FileUtil`类提供了静态方法来执行这些任务,使开发者不必直接与`java.io.File`打交道,简化了文件操作的复杂性。 2. **IO流处理**: 流处理是Java中处理输入输出的重要部分。Hutool的`IoUtil`类对JDK的IO流...

    nva-commons

    1. **通用工具类**:项目可能包含了大量静态工具类,如DateUtil(日期时间处理)、StringUtil(字符串操作)、FileUtil(文件操作)等,这些工具类封装了常见的操作,使得开发者能够快速地进行数据转换、格式化等...

Global site tag (gtag.js) - Google Analytics