美文网首页
java文件夹文件的一些操作

java文件夹文件的一些操作

作者: _灯火阑珊处 | 来源:发表于2019-03-19 13:37 被阅读0次
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    /**
     * 文件操作
     */
    public class FileUtils {
    
        /**
         * 获取文件夹内文件的个数
         *
         * @param filePath
         * @return
         */
        public static int getFileCount(String filePath) {
            int fileCount = 0;
            File d = new File(filePath);
            File list[] = d.listFiles();
            for (int i = 0; i < list.length; i++) {
                if (list[i].isFile()) {
                    fileCount++;
                }
            }
            return fileCount;
        }
    
        /**
         * 复制文件夹内容
         *
         * @param oldPath
         * @param newPath
         * @return
         */
        public static String copyFolder(String oldPath, String newPath) {
            Exception error = null;
            try {
                // 如果文件夹不存在,则建立新文件夹
                (new File(newPath)).mkdirs();
                // 读取整个文件夹的内容到file字符串数组,下面设置一个游标i,不停地向下移开始读这个数组
                File filelist = new File(oldPath);
                String[] file = filelist.list();
                // 要注意,这个temp仅仅是一个临时文件指针
                // 整个程序并没有创建临时文件
                File temp = null;
                int count = 0;
                for (int i = 0; i < file.length; i++) {
                    // 如果oldPath以路径分隔符/或者\结尾,那么则oldPath/文件名就可以了
                    // 否则要自己oldPath后面补个路径分隔符再加文件名
                    // 谁知道你传递过来的参数是f:/a还是f:/a/啊?
                    if (oldPath.endsWith(File.separator)) {
                        temp = new File(oldPath + file[i]);
                    } else {
                        temp = new File(oldPath + File.separator + file[i]);
                    }
    
                    // 如果游标遇到文件
                    if (temp.isFile()) {
                        FileInputStream input = new FileInputStream(temp);
                        // 复制并且改名
                        FileOutputStream output = new FileOutputStream(newPath
                                + "/" + (temp.getName()).toString());
                        byte[] bufferarray = new byte[1024 * 64];
                        int prereadlength;
                        while ((prereadlength = input.read(bufferarray)) != -1) {
                            output.write(bufferarray, 0, prereadlength);
                        }
                        output.flush();
                        output.close();
                        input.close();
                    }
                    // 如果游标遇到文件夹
                    if (temp.isDirectory()) {
                        copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
                    }
    
                    count++;
                }
    
                return "共复制" + count + "个文件";
    
            } catch (Exception e) {
                error = e;
                System.out.println("【复制文件夹出错】" + e);
            }
            return "文件复制出错:</br>" + error.toString();
        }
    
        /**
         * 删除某个目录及目录下的所有子目录和文件
         *
         * @param dir
         * @return
         */
        public static boolean deleteDir(File dir) {
            // 如果是文件夹
            if (dir.isDirectory()) {
                // 则读出该文件夹下的的所有文件
                String[] children = dir.list();
                // 递归删除目录中的子目录下
                for (int i = 0; i < children.length; i++) {
                    // File f=new File(String parent ,String child)
                    // parent抽象路径名用于表示目录,child 路径名字符串用于表示目录或文件。
                    // 连起来刚好是文件路径
                    boolean isDelete = deleteDir(new File(dir, children[i]));
                    // 如果删完了,没东西删,isDelete==false的时候,则跳出此时递归
                    if (!isDelete) {
                        return false;
                    }
                }
            }
            // 读到的是一个文件或者是一个空目录,则可以直接删除
            return dir.delete();
        }
        
    }
    
    

    相关文章

      网友评论

          本文标题:java文件夹文件的一些操作

          本文链接:https://www.haomeiwen.com/subject/pnygmqtx.html