zoukankan      html  css  js  c++  java
  • 2020/7/30 Java之IO流(一)

    一、IO概述

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

      当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。

      因此我们把这种输入和输出动作称为IO操作。

    二、File类

      1、File类构造函数

        

    public class FileDemo {
        public static void main(String[] args) {
            //File构造函数演示
            String pathName = "e:\java_code\day22e\hello.java";
            File f1 = new File(pathName);//将Test22文件封装成File对象。注意;有可以封装不存在文件或者文件夹,变成对象。
            System.out.println(f1);
            
            File f2 = new File("e:\java_code\day22e","hello.java");
            System.out.println(f2);
            
            //将parent封装成file对象。
            File dir = new File("e:\java_code\day22e");
            File f3 = new File(dir,"hello.java");
            System.out.println(f3);
        }
    }

      2、File类属性

    //与系统有关的路径分隔符
            System.out.println(File.pathSeparator);
            //与系统有关的默认名称分隔符
            System.out.println(File.separator);

      3、File类的获取

       方法演示如下:

    public class FileMethodDemo {
        public static void main(String[] args) {
            //创建文件对象
            File file = new File("Test22.java");
            //获取文件的绝对路径,即全路径
            String absPath = file.getAbsolutePath();
            //File中封装的路径是什么获取到的就是什么。
            String path = file.getPath();
            //获取文件名称
            String filename = file.getName();
            //获取文件大小
            long size = file.length();
            
            System.out.println("absPath="+absPath);
            System.out.println("path="+path);
            System.out.println("filename="+filename);
            System.out.println("size="+size);
        }
    }

      5、文件和文件夹的创建删除

      

    public static void main(String[] args) throws IOException {
            //创建文件
            File file=new File("F:\java\io0512\a.txt");
            //boolean flag=file.createNewFile();
            //System.out.println(flag);
            //判断文件是否存在
            System.out.println(file.exists());
            //判断是否是个文件夹
            System.out.println(file.isDirectory());
            //判断是否是文件
            System.out.println(file.isFile());
            //删除文件
            //file.delete();
            //创建文件夹
            file.mkdir();
            File file2=new File("F:\java\io0512\q\z\x\c");
            boolean a= file2.mkdirs();
            System.out.println(a);
        }

      6、listFiles()方法介绍

      

    public class FileMethodDemo3 {
        public static void main(String[] args) {
            File dir = new File("e:\java_code");
            //获取的是目录下的当前的文件以及文件夹的名称。
            String[] names = dir.list();
            for(String name : names){
                System.out.println(name);
            }
            //获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息
            File[] files = dir.listFiles();
            for(File file : files){
                System.out.println(file);
            }
        }
    }

      注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

         1,指定的目录必须是存在的,

         2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

      7、文件过滤器

      

       

        测试类:

    public class FileDemo2 {
        public static void main(String[] args) {
            //获取扩展名为.java所有文件
            //创建File对象
            File file = new File("E:\code\day11_code");
            //获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器
            File[] files = file.listFiles(new MyFileFilter());
            //遍历获取到的所有符合条件的文件
            for (File f : files) {
                System.out.println(f);
            }
        }
    }

      自定类继承FilenameFilter过滤器接口:

    //定义类实现文件名称FilenameFilter过滤器
    class MyFileFilter implements FilenameFilter{
        public boolean accept(File dir, String name) {
            return name.endsWith(".java");
        }
    }

    二、递归

      1、递归的概述:

        递归,指在当前方法内调用自己的这种现象

      

    public void method(){
        System.out.println(“递归的演示”);
        //在当前方法内调用自己
        method();
    }

      2、使用递归计算1-n直接的和

    public static void main(String[] args) {
            //计算1~num的和,使用递归完成
            int n = 5;
            int sum = getSum(n);
            System.out.println(sum);
            
        }
        public static int getSum(int n) {
            if(n == 1){
                return 1;
            }
            return n + getSum(n-1);
        }
    }

      3、递归打印所有子目录中的文件路径

    步骤:

    1. 指定要打印的目录File对象

    2. 调用getFileAll()方法

    2.1 获取指定目录中的所有File对象

    2.2 遍历得到每一个File对象

    2.3 判断当前File 对象是否是目录

    判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法

    判断结果为false,说明是文件,打印文件的路径

    public class FileDemo2 {
        public static void main(String[] args) {
            File file = new File("d:\test");
            getFileAll(file);
        }
        //获取指定目录以及子目录中的所有的文件
        public static void getFileAll(File file) {
            File[] files = file.listFiles();
            //遍历当前目录下的所有文件和文件夹
            for (File f : files) {
                //判断当前遍历到的是否为目录
                if(f.isDirectory()){
                    //是目录,继续获取这个目录下的所有文件和文件夹
                    getFileAll(f);
                }else{
                    //不是目录,说明当前f就是文件,那么就打印出来
                    System.out.println(f);
                }
            }
        }
    }

      4、斐波那契数列

     

    public static void main(String[] args) {
            System.out.println(get(12));
        }
        public static int get(int n){
            if(n==1){
                return 1;
            }
            if(n==2){
                return 1;
            }
            return get(n-1)+get(n-2);
        }

    三、冒泡排序

      

    public static void main(String[] args) {
            int[]arr={7,1,6,22,11,3,2};
            int n=0;
            for(int i=0;i<arr.length-1;i++){
                for(int j=0;j<arr.length-i-1;j++){
                    if(arr[j]>arr[j+1]){
                        n=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=n;
                    }
                }
            }
            for(int i:arr){
                System.out.println(i);
            }
        }
  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/luzhijin/p/13401782.html
Copyright © 2011-2022 走看看