`

文件处理常用方法

阅读更多

1.通过递归算法查找指定文件

public class FileSearch {

    /**
     * 
     * @param args
     * @Description: 测试该类
     */
    public static void main(String[] args) {
        FileFilter filter = new FileFilter() {

            public boolean accept(File pathname) {
              
                return pathname.getName().equals("aa.xml");
            }
        };
        List<File> list = search("./sjs/xml", filter);

        for (File file : list) {
            System.out.println(file.getName());
        }

    }

    public static List<File> search(String filePath, FileFilter filter) {
        return search(new File(filePath), filter);
    }

    // 递归算法遍历指定文件
    public static List<File> search(File file, FileFilter filter) {
        List<File> result = new LinkedList<File>();
        if (!file.exists()) {
            return null;
        }

        if (file.isDirectory()) {
            File[] subs = file.listFiles();
            if (subs != null) {
                for (File sub : subs) {
                    result.addAll(search(sub, filter));
                }
            }
        }
        if (filter.accept(file)) {
            result.add(file);
        }
        return result;

    }
}

 2.通过递归算法删除指定文件

 

public class FileDelete {
    
    //删除指定目录下以".txt"结尾的文件
    public static void main(String...filter) {
        deleteFile("./sjs/xml", new FileFilter(){
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".txt");
            }
            
        });
    }

    public static void deleteFile(String filePath,FileFilter filter) {
        if(filePath == null || "".equals(filePath)) {
            return  ;
        }
        //如果过滤器为空,为了防止删去所有的文件,故不做删除操作
        if(filter == null ) {
            return ;
        }
        deleteFile(new File(filePath), filter) ;
    }
    
    private static void deleteFile(File file,FileFilter filter) {
        if(!file.exists()) {
            return ;
        }
        if(file.isDirectory()) {
            File[] subs = file.listFiles(filter) ;
            if(subs != null ) {
                for(File sub : subs ) {
                    deleteFile(sub, filter) ;
                }
            }
        }
        if(filter.accept(file)) {
            file.delete() ;
        }
    }
}

 3.文件切割器

public class FileSplit {
    
    public static void main(String...output) {
        long start = System.currentTimeMillis() ;
        split("C:\\fileparse\\nohup.out","C:\\logs",1024*1024*4L) ;
        System.out.println(System.currentTimeMillis() - start) ;
    }
    
    
    public static void split(String source, String output, long capcity) {
        File sourceFile = new File(source);
        long length = sourceFile.length();
        if (length <= 0) {
            return;
        }
        if (capcity <= 0) {
            capcity = 1024 * 1024L;
        }
        long size = (length % capcity == 0) ? length / capcity : length / capcity + 1;
        InputStream is = null;
        OutputStream out = null;
        try {
            is = new FileInputStream(sourceFile);
            byte[] once = new byte[(int) capcity];
            int readReally = 0;
            for (int start = (int) size; start > 0; start--) {
                try {
                    readReally = is.read(once);
                    byte[] really = new byte[readReally];
                    System.arraycopy(once, 0, really, 0, readReally);
                    out = new FileOutputStream(new File(output, sourceFile.getName()+"-" + start), false);
                    out.write(really);
                    out.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (out != null) {
                        try {
                            out.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
 
分享到:
评论

相关推荐

    常用文件处理方法(java)

    此文件包含常用文件处理方法,其中包含文件压缩,递归删除,图片处理等等,语言基于java。

    23个常用的文件处理方法

    23个常用的文件处理方法,1.获取系统的默认编码,2.在某个路径下创建一个文件,3.创建一个文件夹,4.某个路径下如果存在文件,则删除,5.删除文件夹,6.判断指定路径是否为一个文件夹,7.列出指定目录的全部文件名,...

    图像处理的常用方法

    本篇文章将深入探讨“图像处理的常用方法”以及如何利用C#进行图像处理的入门知识。 图像处理主要包括图像获取、预处理、特征提取、图像分析与识别等步骤。在C#中,我们可以利用.NET Framework或.NET Core提供的...

    Python 文件处理 08_文件对象常用方法和属性总结_seek()任意位置操作.mp4

    Python 文件处理 08_文件对象常用方法和属性总结_seek()任意位置操作.mp4

    Java常用文件处理类

    该类主要对常见的一些文件操作进行了封装,如读写文件(UTF-8)、复制文件、删除文件,创建目录等

    C#文件读写常用类介绍

    以上介绍了`System.IO.File`类中的几个常用方法,这些方法为C#开发者提供了强大的文件处理能力。无论是简单的文件读写,还是复杂的文件移动、复制操作,都可以通过这些方法轻松实现。此外,对于更高级的需求,还可以...

    数字图像处理常用图片BMP

    数字图像处理经典图片BMP通常是一些常用的测试图像,如Lena、Barbara、Peppers等,这些图像在学术研究和软件开发中被广泛使用,用来检验和展示各种图像处理技术的效果,如滤波、增强、分割、编码等。 总结来说,...

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

    在C#编程语言中,对文件和目录的操作是软件开发中的常见需求,尤其是在处理大量数据、备份、日志记录或用户配置文件时。本文将深入探讨C#中经典的文件操作方法,包括文件读写、复制、删除、移动以及目录创建与删除等...

    海量数据处理常用方法

    ### 海量数据处理常用方法详解 #### 一、引言 随着信息技术的快速发展,数据量呈现出爆炸性增长的趋势。如何高效地存储、处理和分析这些海量数据成为了现代信息技术领域的一项重要挑战。本文旨在探讨几种常用的海量...

    Python 文件处理 13_os.path模块_常用方法.mp4

    Python 文件处理 13_os.path模块_常用方法.mp4

    图像处理的常用方法集合(20)

    "图像处理的常用方法集合(20)"这个资源显然涵盖了多个关键的技术,包括 BMP 头文件处理、离散余弦变换(DCT)、傅立叶变换、高斯滤波以及二值化等。以下是对这些技术的详细解释: 1. **BMP 头文件处理**:BMP 是...

    图像处理常用标准图像

    本主题聚焦于“图像处理常用标准图像”,这是一批包含多种类型和尺寸的图像资源,旨在为图像处理专业人士提供丰富的素材。这些图像涵盖了灰度图像和彩色图像,尺寸多样,既有256*256像素的,也有512*512像素的,以...

    200SMART常用库文件.zip

    标签“西门子PLC常用库文件”揭示了这些库文件是专为西门子PLC系统设计的,特别是针对那些在多个项目中反复使用的功能,如运动控制、通信、模拟量处理等。西门子PLC的库文件一般遵循IEC 61131-3标准,支持多种编程...

    一种基于GPU和内存映射文件的高分辨率遥感图像快速处理方法.pdf

    本文提出了一种基于GPU和内存映射文件的高分辨率遥感图像快速处理方法,以解决高分辨率遥感图像处理中遇到的程序执行时间过长和内存空间不足的问题。该方法利用CUDA技术和内存映射文件技术,通过将图像数据映射到...

    2500个常用字音频文件

    在IT领域,音频文件处理是一项基础且重要的技术。在这个压缩包中,“2500个常用字音频文件”集合提供了一种创新的方式学习和理解汉字,尤其适合语言学习者和教育工作者。这些音频文件可能包含了标准的普通话发音,...

    常用大数据量,海量数据处理方法,算法总结

    本文总结了常用的海量数据处理方法,包括 Bloom filter、Hashing 和 bit-map 等。这些方法可以用来解决大数据量的问题,例如数据字典、判重、集合求交集等问题。 Bloom Filter Bloom filter 是一种空间效率高、...

    倍福常用库文件,.lib库文件

    为了更好地利用这些库文件,开发者需要熟悉TwinCAT的编程环境和库文件的使用方法,以及如何在编程过程中正确地引用和调用库中的功能。 总结来说,“倍福常用库文件,.lib库文件”是倍福PLC编程的核心组成部分,它们...

    图像处理常用图片(BMP格式)

    本压缩包文件“图像处理常用图片(BMP格式)”包含了一批512像素乘以512像素大小的BMP图像,这些图像可能是为了教学、测试或研究目的而收集的。 1. BMP文件结构:BMP文件由文件头和图像数据两部分组成。文件头包含...

    Linux常用命令之文件处理.xmind

    Linux常用命令之文件处理.xmind

    jsp常用方法

    本篇将详细讲解"jsp常用方法"中可能包含的一些核心知识点,并以提供的`Bean.java`文件为例进行解析。 1. **JSP内置对象**: JSP提供了九个内置对象,它们是页面上下文(pageContext)、请求(request)、响应...

Global site tag (gtag.js) - Google Analytics