zoukankan      html  css  js  c++  java
  • File

    IO概述:

        当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。

        当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。因此我们把这种输入和输出动作称为IO操作。

    File类:

        构造函数:

        

         

    public class Demo01 {
    
    	public static void main(String[] args) {
    		//将文件封装为File对象
              //第一种方式 File file=new File("D:\io0803\demo01.txt"); System.out.println(file); //2:第二种方式比第一种方式灵活 File file2=new File("D:\io0803","demo01.txt"); System.out.println(file2); //3:最为灵活 File parent=new File("D:\io0803"); File file3=new File(parent,"demo01.txt"); System.out.println(file3); //与系统有关的路径分隔符 System.out.println(File.pathSeparator);//可以自动识别当前的系统,linux是: //与系统有关的默认名称分隔符 System.out.println(File.separator);//linux } }

         此方法不会判断此文件是否存在。

    File类的获取:

        

         

    public class Demo02 {
    
    	public static void main(String[] args) {
    		File file=new File("D:\io0803\demo01.txt");
    		//获取绝对路径
    		String path=file.getAbsolutePath();
    		System.out.println("绝对路径:"+path);
    		//获取路径字符串
    		String path2=file.getPath();
    		System.out.println("路径字符串:"+path2);
    		//获取文件名
    		String name=file.getName();
    		System.out.println("文件名:"+name);
    		//获取文件大小
    		long len=file.length();
    		System.out.println("文件长度:"+len);
    		//文件以字节存储,所以类型是long
    	}
    
    }
    

     文件和文件夹的创建与删除:

      

       

    public class Demo03 {
    
    	public static void main(String[] args) throws IOException {
    		method04();
    		
    	}
    //创建文件
    	public static void method01() throws IOException{
    		//描述要创建的文件
    		File file=new File("D:\io0803\demo01.txt");
    		//创建文件(不能创建文件夹)
    		//当文件已存在不能创建
    		boolean f=file.createNewFile();
    		System.out.println(f);
    	}
    //删除文件
    	public static void method02(){
    		//明确要删除文件的路径
    		File file=new File("D:\io0803\aa");
    		//删除文件(既可以删除文件也可以删除文件夹),删除多级文件夹只能从后面一个文件夹一个文件夹的删除。
    		boolean flag=file.delete();
    		System.out.println(flag);
    	}
    //判断文件
    	public static void method03(){
    		File file=new File("D:\io0803\demo01.txt");
    		//是否存在
    		System.out.println(file.exists());
    		//是否是文件夹
    		System.out.println(file.isDirectory());
    		//是否是文件
    		System.out.println(file.isFile());
    	}
    //创建文件夹
    	public static void method04(){
    		File file=new File("D:\io0803\a\b\c\d\e");
    		//创建
    		file.mkdir();
    		//创建多级目录
    		file.mkdirs();
    	}
    }
    

     ListFile()方法:

        

        

    public class Demo04 {
    public static void main(String[] args) {
    	File file=new File("D:\io0803");
    	//获取该目录文件下的所有文件夹名称组成的String 数组
    	/*String files[]=file.list();
    	for(String f:files){
    		System.out.println(f);
    	}*/
    	//获取该目录下的所有文件或文件夹对象组成的File数组
    	File[] files=file.listFiles();
    	for(File f:files){
    		System.out.println(f);
    	}
    }
    }
    

     文件过滤器:

        接口:

          FileFilter  用于抽象路径名的过滤器

          FileFilter 过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象,当我们想对当前文件或文件夹进行过滤,就可以使用FileFilter ,比如需要当前目录下的所有文件夹,就可以使用FileFilter 过滤器。

          

          代码:

            

    import java.io.File;
    import java.io.FileFilter;
    //文件过滤器
    public class MyFileFilter implements FileFilter{
    
    public boolean accept(File pathname) {
        //过滤应该过滤什么条件下的文件
        //筛选以.txt结尾的文件
        //获取文件名
        /*String name=pathname.getName();
        //将文件名转小写
        name=name.toLowerCase();
        //判断后缀
        boolean flag=name.endsWith(".txt");
        return flag;*/
        return pathname.getName().toLowerCase().endsWith(".txt");
    }
    }
    public class Demo01 {
    public static void main(String[] args) {
        //筛选io0803下的所有.txt文件
        File file=new File("D:\io0803");
        //筛选文件
        File[] files=file.listFiles(new MyFileFilter());
        for(File f:files){
            System.out.println(f);
        }
    }
    }

    递归:

        指在当前方法内调用自己的现象。

        递归分为直接递归和间接递归。

           递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

        

         public class Demo01 {
    
        public static void main(String[] args) {
    
            int num = get(5);
            System.out.println(num);
            int nn=add(5);
            System.out.println(nn);
            System.out.println(sum(6));
        }
    
        // 用递归计算1-5的和
        public static int get(int n) {
            if (n == 1) {
                return 1;
            }
            return n + get(n - 1);
        }
        //用递归计算5的阶乘
        public static int add(int n){
            if(n==1){
                return 1;
            }
            return n*add(n-1);
        }
        //斐波那契数列
        public static int sum(int n){
            if(n==1){
                return 1;
            }
            if(n==2){
                return 1;
            }
            return sum(n-1)+sum(n-2);
        }
    }

     递归打印所有文件和文件夹:

        

    public class Demo02 {
    
        public static void main(String[] args) {
            get(new File("D:\io0803"));
    
        }
        //参数代表要遍历的文件夹路径
    public static void get(File file){
        System.out.println("===="+file+"====");
    //获取当前文件夹中的所有文件和文件夹组成的File数组对象
        File[] files=file.listFiles();
        //遍历取到每一个File对象
        for(File f:files){
            //判断是否是文件夹
            if(f.isDirectory()){
                //继续获取该文件夹下的所有文件和文件夹
                get(f);    
            }else{
                //只要是文件就打印输出
                System.out.println(f);
            }
        }
    }
    }

    递归打印指定的文件:

        

    public class Myfilter implements FileFilter{
    
    public boolean accept(File pathname) {
        //如果该文件是文件夹,直接true
        if(pathname.isDirectory()){
            return true;
        }
        return pathname.getName().toLowerCase().endsWith(".txt");
    }
    }
    
    
    public class Demo03 {
    
        public static void main(String[] args) {
            get(new File("D:\io0803"));
    
        }
        //参数代表要遍历的文件夹路径
    public static void get(File file){
    //获取当前文件夹中的所有文件和文件夹组成的File数组对象
        File[] files=file.listFiles(new Myfilter());
        //遍历取到每一个File对象
        for(File f:files){
            //判断是否是文件夹
            if(f.isDirectory()){
                //继续获取该文件夹下的所有文件和文件夹
                get(f);    
            }else{
                //只要是文件就打印输出
                System.out.println(f);
            }
        }
    }
    }
  • 相关阅读:
    支持向量机SVM知识梳理和在sklearn库中的应用
    Android P HIDL demo代码编写 (原创)
    Android P HIDL服务绑定模式与直通模式的分析 (原创)
    NFCApplication 启动分析(原创)
    Android native进程间通讯的实例 (原创)
    android 6.0 高通平台sensor 工作机制及流程(原创)
    NFC OMA 访问
    NXP NFC移植及学习笔记(原创)
    自定义View实战
    从0开始学自定义View -1
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13895426.html
Copyright © 2011-2022 走看看