美文网首页
四、Java高级--5、IO包概述及两个文件系统处理的例子

四、Java高级--5、IO包概述及两个文件系统处理的例子

作者: cybeyond | 来源:发表于2018-05-25 14:45 被阅读0次

    文件系统操作在java.io.File类中,下面演示几个常用的文件操作:

    • 1、显示一个文件的信息
    package javastudy;
    import java.io.File;
    import java.util.Calendar;
    
    public class Test14 {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //两种定义文件示例的方法
        //  File file=new  File("F:\\Java\\JavaTools\\jdk-8u65-windows-x64.exe"); //使用“/”进行转义
            File file=new File("F:\\Java\\JavaTools", "jdk-8u65-windows-x64.exe");
            StringBuilder str=new StringBuilder();
            Calendar ca=Calendar.getInstance();//使用此方法将时间格式转换,易于查看
            ca.setTimeInMillis(file.lastModified());
            str.append("文件的最后修改日期:"+ca.getTime().toLocaleString());//存在横线代表此方法已过时
            str.append("\n");
            str.append("文件的大小:"+file.length());
            str.append("\n");
            if(file.isDirectory()){
                str.append("类型:目录");
            }else{
                str.append("类型:文件");
            }
            System.out.println(str.toString());
        }
    }
    
    执行结果
    • 2、显示某个盘符根目录下的所有文件和目录,并对文件和目录做出区分
    package javastudy;
    
    import java.io.File;
    
    public class Test15 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            File file=new File("e:\\");
            File[] files=file.listFiles(); //定义一个数组files来存放文件名
            for(File f:files){  //将files中的每一个文件交给f来处理
                if(f.isDirectory()){
                    System.out.print("O");
                }else{
                    System.out.print("X");
                }
                System.out.println("\t" + f.getPath());
            }
        }
    }
    
    执行结果
    • 找出某个盘符下所有扩展名为txt的文件,并显示出来(可以使用递归算法:函数自己调用自己)
    package javastudy;
    
    import java.io.File;
    
    import com.sun.webkit.ContextMenu.ShowContext;
    
    public class Test15 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        String path="e:\\";
        Show(path);
        }
        static void Show(String path){
            File f=new File(path); //定义一个对象f
            File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
            for (File file:files){
                if(file.isFile()){
                    if(file.getPath().toUpperCase().endsWith("TXT")){
                        System.out.println(file.getPath());
                    }
                    
                }else{ //如果不是文件,还是一个目录,那么要递归此目录
                    Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
                }
            }
        
        }
    }
    

    通过执行结果发现,此时会报一个空指针的错误


    执行结果

    原因是系统自带的文件不能够被访问,因此需要将其去除掉

    package javastudy;
    
    import java.io.File;
    
    import com.sun.webkit.ContextMenu.ShowContext;
    
    public class Test15 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        String path="e:\\";
        Show(path);
        }
        static void Show(String path){
            //System.out.println("当前执行的路径是:"+path+"......");//显示在处理哪个文件夹
            if(path.endsWith("System Volume Information")){
                return;
            }
            File f=new File(path); //定义一个对象f
            File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
            for (File file:files){
                if(file.isFile()){
                    if(file.getPath().toUpperCase().endsWith("TXT")){
                        System.out.println(file.getPath());
                    }
                    
                }else{ //如果不是文件,还是一个目录,那么要递归此目录
                    Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
                }
            }
        
        }
    }
    

    执行结果中还会报一个空指针错误,原因是因为对是否为空没有做条件判断,即指向的字符对象如果为空值,就会报出空指针错误,但可以根据提示,添加相应的条件


    执行结果
    package javastudy;
    
    import java.io.File;
    
    import com.sun.webkit.ContextMenu.ShowContext;
    
    public class Test15 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        String path="e:\\";
        Show(path);
        }
        static void Show(String path){
            //System.out.println("当前执行的路径是:"+path+"......");//显示在处理哪个文件夹
            if(path.endsWith("System Volume Information")||path.endsWith("~TAAA6E.cab")){
                return;
            }
            File f=new File(path); //定义一个对象f
            File[] files=f.listFiles();//定义数组,将path路径定义的对象f列表文件,交由数据files存放
            for (File file:files){
                if(file.isFile()){
                    if(file.getPath().toUpperCase().endsWith("TXT")){
                        System.out.println(file.getPath());
                    }
                    
                }else{ //如果不是文件,还是一个目录,那么要递归此目录
                    Show(file.getPath());//是目录,在调用自己,直至遍历出所有文件
                }
            }
        
        }
    }
    

    相关文章

      网友评论

          本文标题:四、Java高级--5、IO包概述及两个文件系统处理的例子

          本文链接:https://www.haomeiwen.com/subject/gaqhjftx.html