JAVA基础-File(1)

1.创建Files路径:

File:文件和目录路径名的抽象表示形式。
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

file常用方法:
创建功能: boolean createNewFile()
boolean mkdir() 创建此抽象路径名指定的目录,创建文件夹
boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
删除功能:boolean delete()
获取功能:boolean exists()
判断功能: File getAbsoluteFile()
绝对路径:固定不可改变的路径,一盘符开头
相对路径: 相对某个参照物,不能以盘符开头,默认为项目路径。
源码分析:

    @Test
    public  void Method() {
        File file = new File("a.txt");
        System.out.println(file.exists()); //true
        System.out.println(file.isAbsolute());  //false
        System.out.println(file.isDirectory());//false
        System.out.println(file.isFile());//true
    }
    @Test
    public  void method02() {


        File file = new File("a.txt");

        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getAbsolutePath());
        //C:\Users\workspace\Scanner\a.txt
        //C:\Users\workspace\Scanner\a.txt
        System.out.println(file.getParent());//null
        System.out.println(file.getParentFile());//null
        System.out.println(file.lastModified());//0
        Date date = new Date(1495027122528L);
        System.out.println(date.toLocaleString());
        //2017-5-17 21:18:42

        File file2 = new File("a_rename.txt");
        System.out.println(file.renameTo(file2));//true
    }

查看文件夹下有多少文件

@Test
    public  void method01() throws Exception{
        File file = new File("b_test");
        System.out.println(file.createNewFile());
        File file2 = new File("C:\\JavaTest");
        File file3 = new File("c.txt");
//      只有指向文件夹的File对象才可以调用这个方法。
        File[] files = file2.listFiles();
        for (File file4 : files) {
            System.out.println(file4.getName());
        }
    }

2. 输出指定目录下所有的JAva文件名

public class FileDemo4 {
     public static void main(String[] args) {
         File file = new File("C:\\Eclipse");
        method(file);
    }
//   包含子目录
     public static void method(File file) {
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File file2 : files) {
                if (file2.isFile()) {
                    if (file2.getName().endsWith(".java")) {
                        System.out.println(file2.getName());
                    }
                    else if (file2.isDirectory()) {
//                      是一个目录对象
                        method(file);
                    }
                }
            }
        }
    }
//   不包含子目录
     public static void method2(File file) {
            if (file.isDirectory()) {
                System.out.println(file.getAbsolutePath());
                File[] files = file.listFiles();
                for (File file2 : files) {
                    if (file2.isFile()) {
                        if (file2.getName().endsWith(".java")) {
                            System.out.println(file2.getName());
                        }
                    }
                }
            }
        }
}

3.输出流中找不到文件时,会自动创建

//      输出流写一个不存在的文件,不会报错,反而会创建。
        FileOutputStream fileOutputStream = new FileOutputStream("C:\\Eclipse\\javaTest.java");

4.复制文件夹,rename并且复制源文件夹下的所有内容

public class CopyFolder {
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        File src = new File("C:\\Eclipse\\123");
        File dest = new File("C:\\Eclipse\\456");
//      System.out.println(src.getName() + dest.getName());
        copy(src,dest);
    }

    public static void copy(File src,File dest) throws IOException {
//      判断目的文件夹是否存在
        if (!dest.exists()) {
            dest.mkdir();
        }
//      在456里面创建出一个123文件夹
            File newfile = new File(dest,src.getName());
            newfile.mkdir();
            File[] arr = src.listFiles();
//          获取文件夹下的所有子文件
//          copy(newfile, arr);
            for (File file : arr) {
                if (file.isFile()) {
                    copyfile(newfile, file);
                }else{
                    copy(file, newfile);
                }
            }
    }

    private static void copyfile(File newfile, File file) throws FileNotFoundException, IOException {

            FileInputStream fileInputStream = new FileInputStream(file);
            FileOutputStream fileOutputStream = new FileOutputStream(new File(newfile,file.getName()),true);// 创建一个向具有指定 name 的文件中写入数据的输出文件流。

            int i;
            while ((i = fileInputStream.read())!= -1) {
                fileOutputStream.write(i);

            }
            fileInputStream.close();
            fileOutputStream.close();
    }
}

5.文件复制

/*
* 二进制文件只能用字节流。
* 文本文件的复制可以使用字节流,也可以使用字节流
* 图片只能使用字节流。
*
* */

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
//      创建字节输入流
//      FileReader fileReader = new FileReader("javaTest.jpg");
//      创建字节输出流
//      FileWriter filterWriter = new FileWriter("C:\\Eclipse");

        FileInputStream fileInputStream = new FileInputStream("javaTest.jpg");

        FileOutputStream fileOutputStream = new FileOutputStream("C:\\Eclipse\\haha.jpg");

        int len;
        byte[] bytes = new byte[1024];
        while ((len = fileInputStream.read(bytes)) != -1) {
            fileOutputStream.write(bytes, 0, len);
        }
        //      释放资源
        fileInputStream.close();
        fileOutputStream.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值