20201013黄春跃

20201013黄春跃

知识点:

File

File的方法:

File file = new File("D:\\Temp");
        System.out.println("D:\\Temp是否存在:" + file.exists());
        System.out.println("D:\\Temp是否是文件:" + file.isFile());
        System.out.println("D:\\Temp是否是路径:" + file.isDirectory());
        System.out.println("D:\\Temp是否是绝对路径:" + file.isAbsolute());
        File fod = new File(file,"003.png");
        System.out.println("****************************");
        System.out.println("003.png是否存在:" + fod.exists());
        System.out.println("003.png是否是文件:" + fod.isFile());
        System.out.println("003.png是否是路径:" + fod.isDirectory());
        System.out.println("003.png是否是隐藏文件:" + fod.isHidden());
        System.out.println("获取003.png的绝对路径:" + fod.getAbsolutePath());
        System.out.println("获取003.png的路径:" + fod.getPath());
        System.out.println("获取003.png的名字:" + fod.getName());
//      获取文件的最后修改时间
        long time = fod.lastModified();
        Date date = new Date(time);
        System.out.println("文件的最后修改时间为:" + date);
        System.out.println("003.png的大小为:" + fod.length()/1024.0 + "KB");
        //获取file路径下的所有文件名称组成的数组
        String[] fileNames = file.list();
        System.out.println("D:\\Temp路径下的所有文件名称组成的数组:" + Arrays.toString(fileNames));
        for(String s :fileNames ) {
            System.out.print(s + " ");
        }
        System.out.println("");
        
        //获取目录内所有的目录和文件组成的数组
        File[] files = file.listFiles();
        System.out.println("D:\\Temp路径下的所有文件路径组成的数组:" + Arrays.toString(files));
                for (File f : files) {
        System.out.print(f + " ");
        }
        System.out.println("");
        System.out.println("**************");
        System.out.println(fod.getParent());//获取实例文件的上一级路径。
        File fods = file.getParentFile();
        System.out.println(fods);
        String[] fileNamess = fods.list();
        System.out.println(Arrays.toString(fileNamess));
        }
输出结果:
    D:\Temp是否存在:true
D:\Temp是否是文件:false
D:\Temp是否是路径:true
D:\Temp是否是绝对路径:true
****************************
003.png是否存在:true
003.png是否是文件:true
003.png是否是路径:false
003.png是否是隐藏文件:true
获取003.png的绝对路径:D:\Temp\003.png
获取003.png的路径:D:\Temp\003.png
获取003.png的名字:003.png
文件的最后修改时间为:Sat Jul 18 16:35:48 CST 2020
003.png的大小为:1.9921875KB
D:\Temp路径下的所有文件名称组成的数组:[001.tif, 002.tif, 003.png, 004.png, 005.png, buffer-input.txt, file-input.txt, fileSon, fileSon.txt, output.txt, output2.txt, output3.txt, time.txt, TxGameDownload, 他是龙_超清.kux]
001.tif 002.tif 003.png 004.png 005.png buffer-input.txt file-input.txt fileSon fileSon.txt output.txt output2.txt output3.txt time.txt TxGameDownload 他是龙_超清.kux 
D:\Temp路径下的所有文件路径组成的数组:[D:\Temp\001.tif, D:\Temp\002.tif, D:\Temp\003.png, D:\Temp\004.png, D:\Temp\005.png, D:\Temp\buffer-input.txt, D:\Temp\file-input.txt, D:\Temp\fileSon, D:\Temp\fileSon.txt, D:\Temp\output.txt, D:\Temp\output2.txt, D:\Temp\output3.txt, D:\Temp\time.txt, D:\Temp\TxGameDownload, D:\Temp\他是龙_超清.kux]
D:\Temp\001.tif D:\Temp\002.tif D:\Temp\003.png D:\Temp\004.png D:\Temp\005.png D:\Temp\buffer-input.txt D:\Temp\file-input.txt D:\Temp\fileSon D:\Temp\fileSon.txt D:\Temp\output.txt D:\Temp\output2.txt D:\Temp\output3.txt D:\Temp\time.txt D:\Temp\TxGameDownload D:\Temp\他是龙_超清.kux 
**************
D:\Temp
D:\
[$RECYCLE.BIN, 13-311 2018年生源地助学贷款表.xls, 13-311 6.7, 13-311 6.7.rar, 13-311安全课作业, 13-311安全课作业.rar, 13-311面试自我介绍, 13-311面试自我介绍.rar, 13311信息安全, 13311信息安全.rar, 13311到梦空间, 13311到梦空间x, 13311到梦空间x.rar, 1705200302黄春跃.doc, 1705200416崔映帆.docx, 2017级软件工程崔映帆1705200416.docx, 311团课, 311团课.rar, 311寝室在校生银行卡信息统计.xlsx, 360安全浏览器下载, 5.4网上团课, 5.4网上团课.rar, 99csv5.1.0.0, a                      python, aaa, Autodesk ReCap 2016, BaiduNetdiskDownload, ChromeSetup.exe, c语言, ebook, IQIYI Video, java, KSWJJ, LenovoDrivers, lll, MATLAB R2014a, MyEclipseGen.class, MyEclipseGen.java, new_gjzq_v6, person, picture, Program Files, Program Files (x86), python期末复习题(软工).docx, QQMusic, release.apk, SGreen浏览器下载, System Volume Information, Temp, tessdata3.0, Test.class, Untitled-1.txt, Users, ww, 二级MS OFFICE无纸化考试模拟软件, 信息安全报告黄春跃.docx, 创业课期末作业, 创业课期末作业.rar, 历史课, 国家安全与你我相关 软工三班 黄春跃 302.docx, 学籍证明(在校学生使用).doc, 安全教育观后感, 安全教育观后感.rar, 安卓报告黄春跃.doc, 安卓期末, 安卓期末.rar, 安卓课期中作业黄春跃1705200302, 安卓课期中作业黄春跃1705200302.rar, 心 的 征 途.docx, 心协策划文件2018-2019, 心协策划文件2018-2019.rar, 搜狗高速下载, 敬老院看望老人策划书.doc, 数字电路, 数学建模, 混合框架开发考核报告.doc, 策划部部长竞选演讲.pptx, 马昭旭竞选ppt.pptx, 黄春跃 竞选演讲.pptx, 黄春跃(1)]

        File file = new File("d://temp");
        String path = file.getAbsolutePath();
        System.out.println("获取路径用getPath方法 --->" + file.getPath());
        System.out.println("获取绝对路径用getAbsolutePath方法 --->" + path);
        System.out.println("获取规范路径用getCanonicalPath方法 ---> " +file.getCanonicalPath());//获取规范路径
        System.out.println(file.canRead()); // true
        System.out.println(file.canWrite()); // true
        System.out.println(file.canExecute());// true
        File fileSon = new File("d://temp//fileSon//f5/f4/f3/f2/f1");
        if(!fileSon.exists()) {
            fileSon.mkdirs();//创建多级文件夹  
        }
        System.out.println(fileSon.exists());
        System.out.println("**********************");
        File f1 = new File("D:/ebook/f5/f4/f3/f2/f1/斗破苍穹.txt");
        if (!f1.getParentFile().exists()) {//如果斗破苍穹.txt的父路径不存在
        f1.getParentFile().mkdirs();//就创建其父目录
//       file.mkdirs();
        }
        f1.createNewFile();//然后再创建文件
        
        //修改文件名
        System.out.println(f1.exists());
        File f2 = new File("D://ebook/f5/f4/f3/f2/f1/dpcq.txt");//当 新文件名称 和原来文件的路径不一样时表示移动文件并修改名字,如果路径一样就只是修改名字
        System.out.println(f2.getAbsolutePath());
        System.out.println(f1.renameTo(f2));
    }

输出结果:
    获取路径用getPath方法 --->d:\temp
获取绝对路径用getAbsolutePath方法 --->d:\temp
获取规范路径用getCanonicalPath方法 ---> D:\Temp
true
true
true
true
**********************
true
D:\ebook\f5\f4\f3\f2\f1\dpcq.txt
true

文件过滤器

package com.itlaobing.demo;

import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

public class demo05 {
    public static void main(String[] args) {
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
            return pathname.length() > 3 * 1024;
            }
            };
            File f = new File("D://temp");
            File[] fileNames = f.listFiles(filter);
            System.out.println(Arrays.toString(f.listFiles()));
            System.out.println(Arrays.toString(fileNames));
            System.out.println(f.length());
    }
        
}

计算磁盘文件的大小

package com.itlaobing.exe;

import java.io.File;
import java.util.Arrays;

public class demo06 {
    static long size = 0;
//  System.out.println(Arrays.toString(fs));
    public static long size(File fod) {
    File[] files = fod.listFiles();
    for(File f :files) {
//      System.out.println(f);
        if(f.isFile()) {
            size += f.length();
        }
        else {
             size(f);
             size += f.length();
        }
    }
    return size;
    }
    public static void main(String[] args) {
        //计算出磁盘上指定文件夹的实际大小。
//      File fod = new File("D://person");
        long length = size(new File("D://temp"));
        System.out.println(length);
        System.out.println(length/1024/1024/1024.0);
        
    }
}

InputStream

package com.itlaobing.liu;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class demo01 {
    public static void main(String[] args) throws FileNotFoundException {
        //第一种创建方式
        FileInputStream fi = new FileInputStream("D://temp");
        //第二种创建方式
        File file = new File("D://temp");
        FileInputStream input = new FileInputStream(file);
    }
}
package com.itlaobing.liu;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class demo02 {
    public static void main(String[] args) throws IOException {
        // 使用绝对路径创建一个File实例,它表示指定路径对应的目录或文件
        File file = new File("D://temp/file-input.txt");
        
        // 如果路径在磁盘上存在并且表示一个文件
        if(file.exists() && file.isFile()) {
            
            //创建输入流对象
            FileInputStream fis = new FileInputStream(file);    
            // 文件长度
            System.out.println("共有" + file.length() + "个字节没有读取");
            int i = fis.read();
            System.out.println("读取到的第一个字节为:" + (char)i);
            System.out.println("还剩" + fis.available() + "个字节没读");// 因为刚刚读取一个字节,所以减少一个
            fis.skip(3);//跳过三个字节
            System.out.println("跳过3个字节后,还剩" + fis.available() + "个字节没读");
            int i2 = fis.read();
            System.out.println("读取到的字节是:" + (char)i2);
            fis.close();
        }
    }
}

复制文件

package com.itlaobing.liu;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class copy {
    public static void main(String[] args) throws IOException {
        /**
        * 复制文件: 1.读取文件 2.输出文件
        */
        long start = System.currentTimeMillis();
        // 创建一个 File 实例,表示被复制的源文件 ( 哪个文件将被复制 )
        File source = new File("F://Youku Files/download/他是龙_超清.kux");
        
        // 创建一个 File 实例,表示复制后的目标文件 ( 复制到哪里、叫什么名字 )
        
        File target = new File("D:/temp", source.getName());
        // 判断 被复制的文件 是否存在 且 是一个文件
        
        if (source.exists() && source.isFile()) {
        // 创建一个输入流,用于 读取 被复制的源文件中的内容
            
        InputStream in = new FileInputStream(source);
        // 创建一个输出流,用于 向 目标文件 中输出被复制的内容
        
        OutputStream out = new FileOutputStream(target);
        int n; // 声明一个变量用于统计实际读取到的字节数
        // 1 << 20 表示 1024 * 1024 ,即缓冲区容量为 1MB
        byte[] bytes = new byte[1 << 20]; // 创建一个字节缓冲区用于保存读取到的字节数据
    
        // 从输入流中读取数据到字节数组中,并将实际读取到的字节数保存到n变量中,最后再与-1比较
        while ((n = in.read(bytes)) != -1) {
            // 将 bytes 数组中的 [ 0 , n ) 之间的字节 写入 到 输出流中
            out.write(bytes, 0, n); // 想一想为什么这里不直接使用out.write(bytes) ?
            }
            long end = System.currentTimeMillis(); // 获取从时间参照点到当前的纳秒数
            System.out.println("复制文件总用时 " + (end - start)/1000 + "s");
            // 关闭两个流 (后开的先关闭 )
            out.close();
            in.close();
            }
            }
            
}

今日总结:

今天花课余时间,把昨天的File都敲了了一遍,晚自习时间把今天学的流也都敲了一遍,但敲到复制文件那里已经十一点过了,应该寝室了,所以今天的作业还没来得及看。

标签

评论