`

JAVA文件/文件夹操作实用函数

阅读更多
列举了一些这个项目中用到的文件/文件夹操作的函数,以备后用。

/**
* 计算文件夹大小
*/
public static final long getDirectorySize( File dir ) {
    long retSize = 0;
    if ( ( dir == null ) || !dir.isDirectory() ) {
        return retSize;
    }
    File[] entries = dir.listFiles();
    int count = entries.length;
    for ( int i = 0; i < count; i++ ) {
        if ( entries[ i ].isDirectory() ) {
            retSize += getDirectorySize( entries[ i ] );
        } else {
            retSize += entries[ i ].length();
        }
    }
    return retSize;
}  

/**
* 删除文件夹
*/
public static final boolean deleteDirectory( File dir ) {
    boolean bRet = false;
    if ( dir !=null && dir.isDirectory() ) {
        File[] entries = dir.listFiles();
        int sz = entries.length;
        for ( int i = 0; i < sz; i++ ) {
            if ( entries[ i ].isDirectory() ) {
                deleteDirectory( entries[ i ] );
            } else {
                entries[ i ].delete();
            }
        }
        dir.delete();
        bRet = true;
    }
    return bRet;
}

/**
* 新建文件夹
*/
public static final void createDirectory( String strDir ) {
    File file = new File( strDir );
    if ( !file.isDirectory() ) {
        file.mkdir();
    }
}

/**
* 移动文件
*/
public static final void moveFile( String strOriginal, String strDest ) throws IOException {
    try {
        File fileOriginal = new File( strOriginal );
        File fileDest = new File( strDest );
        fileOriginal.renameTo( fileDest );
    } catch ( IOException e ) {
        throw new IOException("");
    }
}

/**
* 复制文件
*/
public static final void copyFile( String strOriginal, String strDest ) throws IOException{
    try {
        File fileOriginal = new File( strOriginal );
        File fileDest = new File( strDest );
        FileInputStream fis = new FileInputStream( fileOriginal );
        FileOutputStream fos = new FileOutputStream( fileDest );
        byte[] bytes = new byte[ 1024 ];
        int c;
        while ( ( c = fis.read( bytes ) ) != -1 ) {
            fos.write( bytes, 0, c );
        }
        fis.close();
        fos.close();
    } catch ( IOException e ) {
        throw new IOException("");
    }
}
   
/**
* 复制文件夹
*/
public static final boolean copyDirectory( String strOriginal, String  strDest ) throws Exception {
    boolean bRet = false;
    File dirOriginal = new File( strOriginal );
    if ( dirOriginal !=null && dirOriginal.isDirectory() ) {
        createDirectory( strDest );
        File dirDest = new File( strDest );
        File[] entries = dirOriginal.listFiles();
        int sz = entries.length;
        for ( int i = 0; i < sz; i++ ) {
            StringBuffer sbDest = new StringBuffer();
            sbDest.append( dirDest.getPath() );
            sbDest.append( "\" );
            sbDest.append( entries[ i ].getName() );
            if ( entries[ i ].isDirectory() ) {
                strDest = dirDest.getPath() + "\" + entries[ i ].getName();
                copyDirectory( entries[ i ].getPath(), sbDest.toString() );
            } else {
                copyFile( entries[ i ].getPath(), sbDest.toString() );
            }
        }
        bRet = true;
    }
    return bRet;
}

/**
* 读取文件
*/
private String readFile( File file ) {
    String text= "";
    if ( file.exists() ) {
        Reader reader = null;
        try {
            char[] tempchars = new char[1024];
            int charread = 0;
            reader = new InputStreamReader( new FileInputStream( file ), "UTF-8" );
            while ( ( charread = reader.read( tempchars ) ) != -1 ) {
                for ( int i = 0; i < charread; i++ ) {
                    if ( tempchars[i] == '\r' ) {
                        continue;
                    } else {
                        text += tempchars[i];
                    }
                }
            }
            reader.close();
        } catch ( IOException e ) {
            throw new IOException("");
        }
    }
    return text;
}

/**
* 写入文件
*/
private boolean writeFile( File file, String text ) {
    try {
        Writer writer = new OutputStreamWriter( new FileOutputStream( file ), "UTF-8" );
        writer.write( text );
        writer.close();
        return true;
    } catch ( IOException e ) {
        return false;
    }
}

/**
* 文件夹中的文件按文件名排序(升序)
*/
File[]   files = ( new File( strPictureDirectory ) ).listFiles();
File temp;
for ( int i = 0; i < files.length; i++ ) {
    for ( int j = i; j < files.length; j++ ) {
        if ( files[i].getName().compareTo( files[j].getName() ) > 0 ) {
            temp = files[i];
            files[i] = files[j];
            files[j] = temp;
        }
    }
}
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包4

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包3

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java源码包2

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程...

    jAPIGenerator:一个小型实用程序,用于在(或包含)java .class文件的文件夹上生成通用API文档

    jAPIGenerator ##说明:这是接收.class文件的文件夹,并生成包含以下内容的简约API: 构造函数。 方法。 类字段。 接口。 遗产。 此工具支持递归行为-也就是说,还将在子文件夹和子子文件夹等中进行搜索。

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型...

    java 算法

    简介:这份资源是我以前偶然...递归,拷贝一个目录或者文件到指定路径下,简单的txt转换xml,字母排序(A-Z)(先大写,后小写),列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤,字符串匹配的算法,写入日志。

    java期末复习第讲面向对象程序设计.pptx

    java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。 第8页/共41页 java期末复习第讲面向对象程序设计全文共41页,当前为第8页。 2023年5月29日 4.1.4 访问控制 第9页/共41页 java期末...

    C++编写的基于opencv的视频读写程序

    "C++编写的基于opencv的视频读写程序" 该程序是一个使用C++语言编写的基于OpenCV库的视频读写程序,能够读取...该程序是一个功能强大且实用的视频读写程序,能够读取视频文件或摄像头的图像,并将其保存到视频文件中。

    eclipse 开发c/c++

    还可以通过从文件系统拖动文件夹和文件并将它们放入 Navigator 视图中, 或者通过复制和粘贴来导入文件夹和文件。 图 2. 将现有的源代码导入 CDT 项目 回页首 关键的 CDT IDE 功能 CDT IDE 是在 CDT UI 插件所...

    Visual.C#.编程精彩百例

    实例66 文件夹中的文件列表 实例67 读写文本文件 实例68 读写二进制文件 实例69 显示系统日期与时间(1) 实例70 显示差值的日期与时间(2) 实例71 时钟发生器应用 实例72 在.NET程序设计中使用ATL 实例73 ...

Global site tag (gtag.js) - Google Analytics