(IO流类示例一)File类

io流:java.io.File主要是对磁盘上的文件或目录进行读取操作。但是File这个类只能够读取文件的信息(文件名、文件大小、文件是否存在等),不能对文件的内容进行操作。

理解输入输出:所谓输入输出,是指将数据写入流内存中后,针对从内存中对数据的操作,定义输入与输出,当要读数据时,需要将数据读入流内存中,再从流中输出到控制台或者输出到文件中,此时称为input,而输出同理,是将数据写入流内存后,将数据从流中输出到其他地方,此时称为output

        方法:

                ①File(String pathname):构造方法,内部为绝对路径

                ②File(File parent,String chile):构造方法,前部分文件对象,后部分文件名或目录名

                ③File(String parent,String chile):构造方法,前部分父路径名,后部分文件名或目录名

                ④File(URI ure):构造方法

                ⑤String getName():获取文件或目录名称

                ⑥long length():获取文件或目录长度

                ⑦boolean isFile():判断是否为文件

                ⑧boolean isDirectory():判断是否为目录

                ⑨boolean exists():判断文件或目录是否存在

                ⑩boolean delete():删除文件

                ⑪boolean createNewFile():创建新文件

                ⑫boolean mkdir():创建目录

                ⑬boolean mkdirs():创建多级目录

                ⑭boolean accept():FileFilter接口下的一个方法,用于筛选符合指定条件的文件

        方法测试:

                例一:在d盘下创建一个记事本文件

                             

                        import java.io.File;
                        public class FileDemo01 {
                            public static void main(String[] args) {
                                File file=new File("D:\\IO流练习.txt");
                                System.out.println("文件名称为:"+file.getName());//输出结果:文件名称为:IO流练习.txt
                                System.out.println("文件长度为:"+file.length());//输出结果:文件长度为:4
                                System.out.println("是否为文件:"+file.isFile());//输出结果:是否为文件:true
                                System.out.println("是否为目录:"+file.isDirectory());//输出结果:是否为目录:false
                                System.out.println("文件是否存在:"+file.exists();//输出结果:文件是否存在:true
                                System.out.println("文件是否删除:"+file.delete());//输出结果:文件是否删除:true
                            }
                        }

                        *注:若没有该文件系统不会自行创建。

                例二:

                        import java.io.File;
                        import java.io.IOException;
                        public class FileDemo02 {
                            public static void main(String[] args) throws IOException {
                                File f0=new File(".");//.相当于当前路径下
                                File f1=new File(f0,"b.txt");//相当于File f1=new File(".","b.txt"),该方法使用较少
                                if(!f1.exists()) {
                                    f1.createNewFile();
                                }else {
                                    System.out.println("文件已经存在");
                                }
                                //输出结果:

                                
                                File f2=new File(".","File");
                                if(!f2.exists()) {
                                    f2.mkdirs();
                                }else {
                                    System.out.println("目录已存在");
                                }
                                //输出结果:

                                
                                File f3=new File(".","a\\b\\c\\d");
                                if(!f3.exists()) {
                                    f3.mkdirs();
                                }else {
                                    System.out.println("目录已存在");
                                }
                                //输出结果:

                                
                            }
                        }

                例三:根据给定条件筛选符合条件的文件

               

                        方法一:

                        import java.io.File;
                        import java.io.FileFilter;
                        public class FileDemo03 {
                            public static void main(String[] args) {
                                File file=new File(".");
                                File[] fs=file.listFiles(new FileFilter() {
                                    public boolean accept(File filename) {
                                        return filename.getName().endsWith(".txt");
                                    }
                                });
                                for (File file2 : fs) {
                                    System.out.print(file2.getName());
                                    System.out.print("/");
                                    //输出结果:b.txt/c.txt/d.txt/
                                    }
                                }
                            }

                        方法二:

                        import java.io.File;
                        import java.io.FileFilter;
                        public class FileDemo03 {
                            public static void main(String[] args) {
                                File file=new File(".");
                                File[] fs=file.listFiles();
                                for(File files:fs) {
                                    if(files.getName().endsWith(".txt")) {
                                        System.out.print(files.getName());
                                        System.out.print("/");
                                        //输出结果:b.txt/c.txt/d.txt/
                                    }
                                }
                             }
                         }

                例四:利用递归方法删除嵌套文件夹

                        import java.io.File;
                        public class FileDemo04 {
                            public static void main(String[] args) {
                                File file =new File("a");
                                delFile(file);
                            }
                            public static void delFile(File f) {
                                if(f.exists()) {
                                    if(f.isDirectory()) {
                                        File[] fs=f.listFiles();
                                        if(fs.length!=0) {
                                            for (File f1 : fs) {
                                                delFile(f1);
                                            }
                                        }
                                    }
                                    f.delete();
                                }else {
                                    System.out.println("目录不存在");
                                    }
                                }
                            }
                        输出结果:

增加知识点:递归方法

                特点:自己调用自己,但需要给出一个终止条件

                例一:编写递归方法实现阶乘

                        package com.hyxy;
                        public class FileDemo04 {
                            public static void main(String[] args) {
                                System.out.println(f(10));//输出结果:3628800
                            }
                            public static long f(int i) {
                                if(i==1) {
                                    return 1;
                                    }
                                return i*f(i-1);
                                }
                            }

                例二:利用递归方法求出斐波那契数列任意位

                        package com.hyxy;
                        public class FileDemo04 {
                            public static void main(String[] args) {
                                System.out.println(m(20));//输出结果:6765
                            }
                            public static long m(long i) {
                                if(i==1||i==2) {
                                    return 1;
                                    }
                                return i=m(i-1)+m(i-2);
                                }
                            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值