zoukankan      html  css  js  c++  java
  • 文件文件流(File、FileInputStream、FileOutputStream、FileWriter、FileReader)

    文件流IO流详细介绍,参考博客:https://www.cnblogs.com/fwnboke/p/8529492.html

    https://www.cnblogs.com/shuaiguoguo/p/8883862.html

    文档,文件夹,目录  = java文件 

    来自java.io.File

    URL:统一资源定位符

    URI:统一资源标识符

         // 创建文件对象
            // pathname 文件的绝对路径
            // CTRL+2,L 自动补全
            File file = new File("D:/test.txt"); // 这个文件还在内存中在本地是存在.
    
            // 判断文件是否存在
            System.out.println(file.exists());
            // 判断是否为文件
            System.out.println(file.isFile());
            // 判断是否为目录
            System.out.println(file.isDirectory());
    
            try {
                if (!file.exists()) {
                    // 调用创建文件的方法
                    boolean flag = file.createNewFile();
                    System.out.println(flag ? "成功" : "失败");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
          //创建目录及文件的方法
         File file = new File("D:/a/b/c/d/a.bat");
            // 判断创建文件的目录是存在
            String dir = file.getParent();
            File dirFile = new File(dir);
            if (!dirFile.exists()) {
                // 创建目录使用是mkdir方法
                //dirFile.mkdir(); // 创建一级目录
                dirFile.mkdirs(); //  创建多级目录
            }
            // 创建这个文件
            try {
                boolean flag = file.createNewFile();
                System.out.println(flag ? "创建成功" : "创建失败");
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 文件属性
            System.out.println("最后修改时间:"+new Date(file.lastModified()));
            System.out.println("文件路径:"+file.getAbsolutePath());
            System.out.println("文件名称:"+file.getName());
            System.out.println("文件的大小:"+file.length());
            System.out.println("是否可读:"+file.canRead());
            System.out.println("是否可写:"+file.canWrite());
            System.out.println("是否隐藏:"+file.isHidden());
            
            // 删除文件(文档才能直接删除,文件夹必须为空才能删除)
            file.delete();
    /**
         * 列出某个目录下面的文件
         */
        private static void listDirFiles() {
            File dir = new File("C:/Windows");
            // 获取c盘根目录下面所有文件名称组成数组
            /*String[] list = dir.list();
            for (String path : list) {
                System.out.println(path);
            }*/
            System.out.println("--------------------");
            // 获取C判断根目录下面所有文件
            File[] listFiles = dir.listFiles();
            for (File file : listFiles) {
                System.out.println(file.getAbsolutePath());
            }
        }
    /**
         * 递归方法遍历一个目录下面所有文件
         */
        private static void listDirAllFiles(String path) {
            File dir = new File(path);
            // 获取到path根目录下面所有文件
            File[] files = dir.listFiles();
            
            if (files != null  && files.length > 0) {
                for (File file :  files) {
                    // 判断如果当前遍历这个是一个目录,直接继续查找该目录下面所有文件
                    if (file.isDirectory()) {
                        // System.out.println(file.getAbsolutePath());
                        // 递归查找该目录下面所有文件
                        listDirAllFiles(file.getAbsolutePath());
                    } else {
                        // 直接输出文件的路径
                        System.out.println(file.getAbsolutePath());
                    }
                }
            }
        }
    @Test // 测试字节输出流写入文件内容
        public void testOutStream() {
            // 创建一个文件
            File file = new File("D:/a/b/c/d","out.txt");
            try {
                // 只要目录存在,即使文件不存在,文件流会自动创建这个文件
                FileOutputStream fos = new FileOutputStream(file);
                // 使用write方法把内存中内容写入到文件
                fos.write("我爱我的家".getBytes());
                // 关闭流
                fos.flush();
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        @Test // 测试字节输出流写入文件内容
        public void testInputStream() {
            // 创建一个文件
            File file = new File("D:/a/b/c/d","out.txt");
            
            try {
                // 创建文件输入流
                FileInputStream fis = new FileInputStream(file);
                // 读取文件中的内容
                System.out.println("可用字节数:"+fis.available());
    
                // 定义读取内容缓冲区
                byte[] buffer = new byte[fis.available()];
                fis.read(buffer, 0, buffer.length);
                
                // 把字节数组转换为一个字符串
                String content = new String(buffer);
                System.out.println(content);
                
                // 关闭流
                fis.close();
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    public void testFileWriter() {
            try {
                // 创建字符输出流, 追加写入的内容
                FileWriter writer = new FileWriter("D:\a\b\c\d\out.txt", true);
                // 操作流
                writer.write("|我是字符流");
                
                // 关闭流
                writer.flush();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        @Test
        public void testFileReader() {
            try {
                File file = new File("D:\a\b\c\d\out.txt");
                // 创建字符输入流
                FileReader reader = new FileReader(file);
                // 操作流
                char[] cbuf = new char[(int) file.length()];
                reader.read(cbuf, 0, cbuf.length);
                
                String content = new String(cbuf);
                System.out.println(content.trim());
                
                // 关闭流
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    /**
         * 拷贝大文件的方法
         * @param srcFile 源文件
         * @param desFile 目标文件
         */
        private static void copyBigFile(String srcFile, String destFile) {
            
            try {
                // 创建文件输入流
                FileInputStream in = new FileInputStream(srcFile);
                // 创建文件输出流
                FileOutputStream out = new FileOutputStream(destFile);
                // 定义读取内容的缓存区
                byte[] buffer = new byte[1024];
                // 定义记录长度的变量
                int len = 0;
                
                while((len = in.read(buffer)) != -1) {
                    System.out.println(len);
                    // 把循环读取到缓冲区中数据写入到目标文件中
                    out.write(buffer, 0, len);
                }
                
                // 关闭流(谁最后使用就先关闭谁)
                out.flush();
                out.close();
                in.close();
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    2020.8.20收获
    2020.8.19
    2020.8.21收获
    2020.8.24收获
    UIScrollView滑动动作结束的侦听函数
    iphone 自定义UISwitch
    总结SQLite不支持的SQL语法有哪些
    去除nsstring中的空格
    ObjectiveC中判断字符串是否包含其他字符串
    设置IPHONE顶部的状态栏的样式
  • 原文地址:https://www.cnblogs.com/lql6/p/11095878.html
Copyright © 2011-2022 走看看