`
fanjf
  • 浏览: 329664 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

Java复制、移动、删除、获取大小文件

    博客分类:
  • Java
 
阅读更多

利用Apache Commons IO工具包(commons-io-1.4.jar)来实现文件(夹)的复制、移动、删除、获取大小等操作。

package com.util.file;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.StringReader;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.NotFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* 文件工具
*/
public final class FileToolkit {
        private static final Log log = LogFactory.getLog(FileToolkit.class);

        /**
         * 复制文件或者目录到指定的文件夹,复制前后文件完全一样。
         *
         * @param resFilePath 源文件路径
         * @param distFolder    目标文件夹
         * @IOException 当操作发生异常时抛出
         */
        public static void copyFile(String resFilePath, String distFolder) throws IOException {
                File resFile = new File(resFilePath);
                File distFile = new File(distFolder);
                //判断是目录,还是文件
                if (resFile.isDirectory()) {
                        FileUtils.copyDirectoryToDirectory(resFile, distFile);
                } else if (resFile.isFile()) {
                        FileUtils.copyFileToDirectory(resFile, distFile, true);
                }
        }

        /**
         * 删除一个文件或者目录
         *
         * @param targetPath 文件或者目录路径
         * @IOException 当操作发生异常时抛出
         */
        public static void deleteFile(String targetPath) throws IOException {
            File targetFile = new File(targetPath);
            //判断是目录,还是文件
            if (targetFile.isDirectory()) {
                FileUtils.deleteDirectory(targetFile);
            } else if (targetFile.isFile()) {
                targetFile.delete();
            }
        }

        /**
         * 移动文件或者目录,移动前后文件完全一样,如果目标文件夹不存在则创建。
         *
         * @param resFilePath 源文件路径
         * @param distFolder    目标文件夹
         * @IOException 当操作发生异常时抛出
         */
        public static void moveFile(String resFilePath, String distFolder) throws IOException {
                File resFile = new File(resFilePath);
                File distFile = new File(distFolder);
                if (resFile.isDirectory()) {
                        FileUtils.moveDirectoryToDirectory(resFile, distFile, true);
                } else if (resFile.isFile()) {
                        FileUtils.moveFileToDirectory(resFile, distFile, true);
                }
        }

        /**
         * 重命名文件或文件夹
         *
         * @param resFilePath 源文件路径
         * @param newFileName 重命名
         * @return 操作成功标识
         */
        public static boolean renameFile(String resFilePath, String newFileName) {
                String newFilePath = FileToolkit.getParentPath(resFilePath) + "/" + newFileName;
                File resFile = new File(resFilePath);
                File newFile = new File(newFilePath);
                return resFile.renameTo(newFile);
        }

        /**
         * 根据文件或者目录路径,取得其父路径
         * @param filePath
         * @return String
         */
        private static String getParentPath(String filePath){
            if(filePath != null && filePath.indexOf("/")>-1){
                String parentPath = filePath.substring(0, filePath.indexOf("/"));
                System.out.println("源文件路径:" + filePath);
                System.out.println("父文件路径:" + parentPath);
                return parentPath;
            }else{
                return "";
            }
        }
       
        /**
         * 读取文件或者目录的字节大小
         *
         * @param distFilePath 目标文件或者文件夹
         * @return 文件或者目录的大小,如果获取失败,则返回-1
         */
        public static long genFileSize(String distFilePath) {
                File distFile = new File(distFilePath);
                if (distFile.isFile()) {
                        return distFile.length();
                } else if (distFile.isDirectory()) {
                        return FileUtils.sizeOfDirectory(distFile);
                }
                return -1L;
        }

        /**
         * 判断一个文件是否存在
         *
         * @param filePath 文件路径
         * @return 存在返回true,否则返回false
         */
        public static boolean isExist(String filePath) {
                return new File(filePath).exists();
        }

        /**
         * 本地某个目录下的文件列表(不递归:即不查询子目录存在的文件列表)
         *
         * @param folder ftp上的某个目录
         * @param suffix 文件的后缀名(比如.mov.xml)
         * @return 文件名称列表
         */
        public static String[] listFilebySuffix(String folder, String suffix) {
            if(suffix == null){
                return new String[]{};
            }
           
            IOFileFilter fileFilter1 = new SuffixFileFilter(suffix);
            IOFileFilter fileFilter2 = new NotFileFilter(DirectoryFileFilter.INSTANCE);
            FilenameFilter filenameFilter = new AndFileFilter(fileFilter1, fileFilter2);
            return new File(folder).list(filenameFilter);
        }

        /**
         * 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!)
         * 注意:会覆盖原有的文件内容
         * @param res  原字符串
         * @param filePath 文件路径
         * @return 成功标记
         */
        public static boolean string2File(String res, String filePath) {
                boolean flag = true;
                BufferedReader bufferedReader = null;
                BufferedWriter bufferedWriter = null;
                try {
                        File distFile = new File(filePath);
                        if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs();
                        bufferedReader = new BufferedReader(new StringReader(res));
                        bufferedWriter = new BufferedWriter(new FileWriter(distFile));
                        char buf[] = new char[1024];         //字符缓冲区
                        int len;
                        while ((len = bufferedReader.read(buf)) != -1) {
                                bufferedWriter.write(buf, 0, len);
                        }
                        bufferedWriter.flush();
                        bufferedReader.close();
                        bufferedWriter.close();
                } catch (IOException e) {
                        flag = false;
                        e.printStackTrace();
                }
                return flag;
        }
}

 

分享到:
评论

相关推荐

    java 文件管理器

    Java 文件管理器是一款基于Java语言开发的文件管理系统,它提供了用户友好的图形用户界面(GUI),使得用户可以方便地进行文件和目录的操作,如浏览、创建、删除、重命名、移动和复制等。这款应用程序旨在提供一个...

    java实现对文件的各种操作的工具类.md

    # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 ... 4. 复制整个文件夹内容(包含子文件夹... 获取文件或文件夹的大小

    java 文本文件 支持新建,打开,复制,剪切...

    除了上述功能,Java还提供了其他文件操作,如检查文件是否存在(`exists()`),删除文件(`delete()`),获取文件大小(`length()`),以及检查文件是否是目录(`isDirectory()`)等。 6. **异常处理**: 在进行文件操作...

    java实现,简单文件监控

    在Java编程语言中,实现对本地文件的简单监控是一项实用的技术,这可以帮助开发者在文件系统中检测到诸如移动、复制和粘贴等操作。本文将深入探讨如何利用Java的文件I/O API和事件监听机制来达成这个目标。 首先,...

    java上传文件jar

    例如,`FileUtils`类提供了一系列静态方法,可以方便地进行文件和目录的复制、移动、删除等操作。`IOUtils`类则提供了对流进行读取、写入、关闭和转换的方法,使得开发者无需担心IOException的处理。这些工具在处理...

    java根据路径对文件进行的操作

    在Java编程语言中,`JAVAIO`是核心的输入/输出处理系统,它提供了一系列类和接口用于读取、写入、创建、移动和管理文件。`JAVAIO`库不仅适用于磁盘文件,还包括网络流、内存数据源和其他类型的输入/输出。在“java...

    File-Operation-by-java.rar_java 文件复制_operation

    这个名为"File-Operation-by-java.rar"的压缩包包含了一个用Java实现的文件操作示例,它演示了如何进行文件复制、移动、删除以及新建等基本操作。让我们详细探讨一下这些功能的实现。 1. **文件复制**: 文件复制...

    java 文件操作类

    - `length()`:获取文件大小(字节)。 - `lastModified()`:返回文件的最后修改时间(毫秒)。 - `getName()`:获取文件或目录的名称。 - `getParent()`:获取文件或目录的父路径。 5. **文件和目录列举** - ...

    用JAVA文件管理器 本科大作业水平

    2. **文件和目录操作**: Java的java.io.File类是处理文件和目录的核心,可以创建、删除、重命名文件和目录,以及获取文件的大小、修改时间等信息。此外,File类的list()方法用于获取指定目录下的所有文件和子目录。 ...

    二级文件管理系统java

    3. **文件移动**:通过`renameTo()`方法可以将文件移动到另一个位置,但这个方法不支持跨文件系统的移动,对于这种情况,可能需要先复制文件,再删除原文件。 4. **目录操作**:使用`mkdir()`或`mkdirs()`创建新目录...

    java编写的文件管理系统

    它可以用来创建、删除、重命名文件或目录,以及获取文件属性,如大小、最后修改时间等。 4. **Path接口**:Java 7引入了`java.nio.file.Path`接口,用于表示文件系统的路径。Path接口提供了更多的路径操作,如合并...

    Java 7文件操作

    - Java 7引入了`java.nio.file.FileSystemObserver`接口,可以监听文件系统的变化,如文件创建、删除、移动等事件。 6. **路径操作**: - `getParent()`和`getName()`方法用于获取路径的父路径和最后一个元素。 ...

    文件管理系统---java

    4. **文件复制与移动**:`Files.copy()`和`Files.move()`方法可以轻松实现文件或目录的复制和移动,支持原子操作。 5. **文件属性获取**:通过`File.length()`获取文件大小,`Files.getLastModifiedTime()`得到最后...

    java开发的管理文件系统

    6. 文件复制和移动:`Files.copy()`方法可以从源文件复制到目标文件,`Files.move()`方法则可以移动文件或目录,同时支持原子性操作。 7. 文件属性查询:`File`类提供了诸如文件大小、最后修改时间、是否存在等属性...

    Java文件操作源码大全

    Java文件操作是编程中常见的任务,涉及到文件的创建、删除、读取、写入以及更复杂的操作如复制、移动、加密、压缩等。以下是一些关键的Java文件操作知识点: 1. **创建文件夹**:使用`java.io.File`类的`mkdir()`或...

    Java流操作文件

    在Java中,文件操作是通过流的概念实现的,这允许我们读取、写入、移动、复制以及修改文件。下面我们将深入探讨Java流如何进行文件操作。 ### 文件I/O基础 在Java中,`java.io.File`类是处理文件和目录的基础。它...

    java文件管理器

    这种应用程序允许用户浏览、创建、删除、重命名、复制和移动存储在设备上的文件和目录,提高了用户对手机或平板电脑内部存储的控制和管理能力。 在Java中,实现文件管理涉及到以下几个核心概念和技术: 1. **File...

    java文件管理系统(控制台程序)

    1. **文件操作**:系统能够进行基本的文件操作,如创建、打开、移动、复制和删除文件。这涉及到对Java的`java.io`包的深入理解和使用,特别是`File`类,它是处理文件和目录的主要入口点。 2. **目录管理**:除了...

    JAVA大作业--文件管理器

    在这个系统中,用户可以进行基本的文件和目录操作,如浏览、创建、删除、移动和复制文件或目录。这个项目可能是大学课程中的一个大作业,旨在让学生深入理解Java编程以及文件I/O操作。 在Java中,处理文件和目录...

    文件上传下载需要的jar包 java文件上传下载

    例如,`FileUtils`类可以方便地进行文件的复制、移动和删除。 3. **Servlet API**: 在Java Web开发中,Servlet API是基础,它提供了处理HTTP请求和响应的方法。在处理文件上传和下载时,我们通常会使用`...

Global site tag (gtag.js) - Google Analytics