• JavaSE基础之 IO流


    知识点
    I --  Input
    O --  Output
             * InputStream 输入流
             * OutputStream 输出流
             *
             * 以 流(作为载体) 的方式处理 数据
             *
             * 字节码  主要应用于媒体文件处理 图片 语音 视频...  也可以处理文字 但效率没有字符码效率高
             * 字符码  主要应用于文字的处理
             *
             * File类
             *     创建文件
     * File类
             *   查看API
             *   文件和目录路径名的抽象表示形式。
             *
             * boolean    createNewFile()
             *           当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
             *
             * boolean    delete()
             *           删除此抽象路径名表示的文件或目录。
             *
             * boolean    exists()
             *           测试此抽象路径名表示的文件或目录是否存在。
             *
             * String    getAbsolutePath()
             *           返回此抽象路径名的绝对路径名字符串。 绝对路径
             *
             * String    getName()
             *           返回由此抽象路径名表示的文件或目录的名称。
             *
             * String    getParent()
             *           返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
             *
             * File    getParentFile()
             *           返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
             *
             * String    getPath()
             *           将此抽象路径名转换为一个路径名字符串。相对路径
             *
             * boolean    isAbsolute()
             *           测试此抽象路径名是否为绝对路径名。
             * boolean    isDirectory()
             *           测试此抽象路径名表示的文件是否是一个目录。
             * boolean    isFile()
             *           测试此抽象路径名表示的文件是否是一个标准文件。
             * boolean    isHidden()
             *           测试此抽象路径名指定的文件是否是一个隐藏文件。
             *
             * String[] list()
             *           返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
             *
             * boolean    mkdir()
             *           创建此抽象路径名指定的目录。
             * boolean    mkdirs()
             *           创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
             *
             */

    public class FileTest {
        public static void main(String[] args) {
                    createFile();
            //deleteFile("/Users/dllo/Desktop/homeWork");
        }
    
        private static void createFile() {
    
            //在桌面上创建一个文件夹
            //创建文件夹 参数是路径
            File file1 = new File("/Users/dllo/Desktop/luke_file");
    
            //判断文件或文件夹是否存在 若不存在 返回false   !false --->true
            if (!file1.exists()) {
                file1.mkdir();
            }
    
            //创建多个文件夹 嵌套关系
            File file2 = new File("/Users/dllo/Desktop/luke_file2/ada/asd/dd");
            if (!file2.exists()) {
                file2.mkdirs();
            }
    
    
            //创建文件
            File file3 = new File("/Users/dllo/Desktop/luke_file/ppp.png");
            if (!file3.exists()) {
                try {
                    file3.createNewFile(); //文件生成 createNewFile()
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            //快速创建
            //若想用这种方式创建文件 那么必须保证路径的正确(必须有该文件夹)
            //java 推荐使用
            File file4 = new File("/Users/dllo/Desktop/luke_file/", "aaa.txt");
            try {
                file4.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            /**
             * 打印各个文件的相对路径和绝对路径
             *
             *  删除文件
             */
    
            /**
             * 绝对路径 是最具体的路径
             * 相对路径 是相对工程而言的
             */
    
            System.out.println(file1.getAbsolutePath());
            System.out.println(file1.getPath());
    //        System.out.println(file2.getAbsolutePath());
    //        System.out.println(file2.getPath());
    //        System.out.println(file3.getAbsolutePath());
    //        System.out.println(file3.getPath());
    
            File file5 = new File("luke/小说.txt"); // 工程下创建文件  相对路径
            System.out.println(file5.getPath());  //相对路径
            System.out.println(file5.getAbsolutePath());
        }
    
        private static void deleteFile(String path) {
    
            /**
             * 根据路径删除文件,文件夹
             */
            File file = new File(path);
            if (!file.exists()){
                System.out.println("该文件不存在");
    
                //直接结束此方法
                return;
            }
            //判断要删除的东西是否为文件 若是 则直接删除
            if (file.isFile()){
            file.delete();
            }
    
            //判断要删的东西是否为文件夹
            if (file.isDirectory()){
    
                //获取文件夹里的所有内容 注意是File[] 集合
                File[] files = file.listFiles();
    
                for (File file1 : files) {
                    //递归删除
                    deleteFile(file1.getAbsolutePath());
                }
                file.delete();
            }
        }
    }

    *工程下创建文件


    *读写  IO
    * 按类型分
             *    字节流 字符流
             *
             * 按方向分
             *    输入流 输出流

    public class Main {
        public static void main(String[] args) {
            /**
             * 需求:
             *    1.读取某一文件里的内容
             *    2.将某一字符串写成一个文件
             *    3.读取一个文件里面的内容并且复制到另一个文件中
             *
             */
            read("/Users/dllo/Desktop/地址");
            write("luke/aaa");
        }
    
        private static void write(String outPath) {
            File file = new File(outPath);
            try {
                //创建输出流
                FileOutputStream fos = new FileOutputStream(file);
    
                System.out.println("请输入要输出的内容");
                //创建一个字符串
                String str = new Scanner(System.in).next();
    
                //将字符串转化成字节数组 再进行写操作
                fos.write(str.getBytes());
    
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
        private static void read(String path) {
    
            //获取要读的文件
            File file =new File(path);
    
            //创建输入流
            try {
                FileInputStream fis = new FileInputStream(file);
                byte[] bytes = new byte[1024];
    
                //记录每次读取数据的长度,(位置)
                int length = 0 ;
                String result = "";
                while ((length = fis.read(bytes))!= -1){
    
                    //参数1 要拼接的数组   参数2 起始位置  参数3 结束位置
                    String str = new String(bytes,0,length);
                    result += str;
                    System.out.println(result);
                }
                //最后一定要!!!! 关流
                // 先入后出  先创建的后关 后创建的先关
                fis.close();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


           

  • 相关阅读:
    Spring第一次测试错题解析
    正则回顾
    Spring经典---AOP
    动态代理
    MyBatis第一次测试卷---错题分析
    JS中对数组元素进行增删改移
    限制条件补全代码系列题
    字符串去空格
    数组去重
    数组排序
  • 原文地址:https://www.cnblogs.com/luke-liuqi/p/9338800.html
Copyright © 2020-2023  润新知