Java基础之File操作

         从事项目开发免不了和文件打交道,比如日志文件读写、文件压缩和解压、文件解析、文件上传和下载、文件导出等等。今天和大家一起重温文件操作的一些基础知识,并通过Demo的方式演示。

一、File类常用的API

       这里,主要通过读取文件的方式练习对文件的基本操作:

package com.ldl.file;

import java.io.File;

public class FileTest {
    
    public static void showDirAndFiles(String path) {

        File file = new File(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            if (null == files || files.length == 0) {
                System.out.println("Directory is null...");
                return;
            } else {
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        System.out.println("Dir:" + file2.getAbsolutePath());
                        showDirAndFiles(file2.getAbsolutePath());
                    } else {
                        System.out.println("File:" + file2.getAbsolutePath());
                        System.out.println("File----->>>" + file2.getName());
                    }
                }
            }
        } else {
            System.out.println("file is not exist...");
        }
    }
    
    public static void main(String[] args) {
        showDirAndFiles("D:\\FileTest");
    }

}
运行效果如下(需自行创建相应目录(文件夹)和文件,以供测试):

        这里我们使用了exists(),listFiles(),isDirectory(),getAbsolutePath(),getName()等基本API,相信读者查看上面的实例可以很轻松地掌握这些API的基本使用方法。

二、文件压缩和解压

       需要说明的是,我们需要首先导入ant的jar包。

package com.ldl.file;

import java.io.File;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;

public class FileZipOrUnzip {
           
        public static void zip(String zipFileName,String dirOrFilePathName) {
            File file = new File(zipFileName);
            File dirOrFileName = new File(dirOrFilePathName); 
            
            if (!dirOrFileName.exists()) {
                System.out.println(dirOrFilePathName + "not exist...");
            }   
      
            Project project = new Project();   
            Zip zip = new Zip();   
            zip.setProject(project);   
            zip.setDestFile(file);   
            FileSet fileSet = new FileSet();   
            fileSet.setProject(project);   
            fileSet.setDir(dirOrFileName);   
            
            zip.addFileset(fileSet);   
            zip.execute();   
        }
        
        
        public static void unZip(String zipFile, String dirOrFilePath) {

            File file = new File(zipFile);
            if (!file.exists()) {
                System.out.println(zipFile+"not exist...");
                return;
            }
            
            File file2 = new File(dirOrFilePath);
            if (file2.exists()) {
                deleteDir(file2);
            }
            
            Project p = new Project();
            Expand e = new Expand();
            e.setProject(p);
            e.setSrc(new File(zipFile));
            e.setOverwrite(false);
            e.setDest(new File(dirOrFilePath));
            e.setEncoding("gbk");
            e.execute();
        }

        public static boolean deleteDir(File dirOrFile) {
            if (dirOrFile.isDirectory()) {
                String[] dirAndFiles = dirOrFile.list();
                for (int i=0; i<dirAndFiles.length; i++) {
                    boolean success = deleteDir(new File(dirOrFile, dirAndFiles[i]));
                    if (!success) {
                        return false;
                    }
                }
            }
            return dirOrFile.delete();
        }
        
        public static void main(String[] args) {
            
            //FileZipOrUnzip.zip("D:\\FileTest.zip", "D:\\FileTest");
            FileZipOrUnzip.unZip("D:\\FileTest.zip", "D:\\FileTest2");
        }
}
       执行main方法,依次执行压缩和解压的方法,可以发现在我们指定的目录下生成了zip格式的文件和解压该文件新生成的目录或文件。表示执行文件压缩和解压文件操作成功!

       本文仅仅用到了File类中少部分API,需要朋友们花些时间研究其他API(File类的API相对不多,大家可以编码实践以加深理解。),衷心希望各位在往后的实际项目中遇到文件处理相关的需求或问题,可以游刃有余的实现和解决!

猜你喜欢

转载自blog.csdn.net/ldllovegyh/article/details/83451336