zoukankan      html  css  js  c++  java
  • Java学习笔记 -IO流3:File

    1.基本概念

    • File类和四大家族没有关系,所以File类不能完成文件的读写
    • 一个File对象是目录名或者文件的抽象表示形式
    示例程序
    public class FileTest01 {
        public static void main(String[] args) throws IOException {
            File file = new File("D:\file");
    
            //判断是否存在
            System.out.println(file.exists());
    
            if(!file.exists()) {
                //以文件的形式新建
                file.createNewFile();
            }
    
            if(!file.exists()){
                //以目录的形式新建
                file.mkdir();
            }
    
            if(!file.exists()){
                File f2 = new File("D:/a/b/c");
                //以多重目录创建
                f2.mkdirs();
            }
        }
    }
    

    2.常用方法

    public class FileTest02 {
        public static void main(String[] args) {
    
            File f1 = new File("D:\迅雷下载");
    
            //获取绝对路径名
            System.out.println(f1.getAbsoluteFile());
            //获取文件名
            System.out.println("文件名:" + f1.getName());
    
            //判断是否是一个目录
            System.out.println(f1.isDirectory());
    
            //判断是否是一个文件
            System.out.println(f1.isFile());
    
            //获取文件最后一次修改的时间
            long haoMiao = f1.lastModified();  //从1970开始的总毫秒数
            Date time = new Date(haoMiao);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd:mm:ss SSS");
            String strTime = sdf.format(time);
            System.out.println(strTime);
    
            //获取文件的大小 (单位:字节)
            System.out.println(f1.length());
            
            //获取当前目录下所有子文件
            File[] files = f1.listFiles();
            for(File f : files){
                System.out.println(f.getName());
            }
        }
    }
    

    (重点)3.目录拷贝模板程序

    • 总结:""是因为转义的原因才有两个"",实际上在字符串中只有1个
    • (错误总结)文件拷贝编写程序的时候需要注意:不要将srcFile、desFile设置为一个目录,而是设置为目录文件名,落实到文件上才不会出错
    public class FileCopy {
    
        public static void main(String[] args) {
            File srcFile = new File("D:\Aseprite");
            File desFile = new File("D:\迅雷下载");
            FileCopy.create(srcFile, desFile);
        }
    
        /**
         * 目录拷贝
         * @param srcFile 源目录
         * @param desFile 目标目录
         */
        public static void create(File srcFile, File desFile){
            //需要强调:"\"是因为转义的原因才有两个"",实际上在字符串中只有1个
            String desDtr = desFile.getAbsolutePath().endsWith("\") ? desFile.getAbsolutePath() :
                    desFile.getAbsolutePath() + "\" + srcFile.getName();
            desFile = new File(desDtr);
            //如果是一个文件,则直接进行拷贝
            if(srcFile.isFile()){
                copy(srcFile,desFile);
            }
            //如果是一个目录,则首先将此目录创建出来,然后递归
            else if(srcFile.isDirectory()){
                desFile.mkdir();
                File[] files = srcFile.listFiles();
                for(File f : files){
                    create(f, desFile);
                }
            }
        }
    
        /**
         * 文件拷贝
         * @param srcFile 源目录
         * @param desFile 目标目录
         */
        public static void copy(File srcFile , File desFile){
            System.out.println(srcFile.getName());
            System.out.println(desFile.getName());
            System.out.println();
    
            FileInputStream fis = null;
            FileOutputStream fos = null;
            try {
                fis = new FileInputStream(srcFile);
                fos = new FileOutputStream(desFile);
                byte[] bytes = new byte[1024 * 1024];
                int retValue = 0;
                while((retValue = fis.read(bytes)) != -1){
                    fos.write(bytes, 0, retValue);
                }
                fos.flush();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(fis != null){
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(fos != null){
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    使 div 元素看上去像一个按钮
    ORM框架学习(二)
    ORM框架学习(一)
    创建我的第一个MVC4-基于ASPX
    js实现简单的验证码
    常见开发语言擅长领域
    解决IE兼容问题,IE6,IE7,IE8,IE9,IE10
    EF框架学习(7)---EF中的查询方法
    EF框架学习(6)---EF中的在线场景保存数据
    EF框架学习(5)---EF中的在线和离线场景
  • 原文地址:https://www.cnblogs.com/zy200128/p/13021839.html
Copyright © 2011-2022 走看看