小言_互联网的博客

IO流:字符缓冲流、打印流、转换流、文件流、递归遍历文件夹、Properties集合,总结

273人阅读  评论(0)

字符缓冲流

  1. 缓冲流:BufferedReader/BufferedWriter

    • 高效读写

    • 支持输入换行符

    • 可一次写一行,读一行

    • BufferedWriter

    • /**
       * 演示BufferedWriter
       */
      public class demo6 {
             
          public static void main(String[] args)  throws Exception{
             
              //创建BufferedWriter
              FileWriter fw=new FileWriter("e:\\IO流\\buffer.txt");
              BufferedWriter bw=new BufferedWriter(fw);
              //写入
              for (int i = 0; i <10 ; i++) {
             
                  bw.write("好好学习,天天向上");
                  bw.newLine();//写入一个换行符windows \r\n  linux \n
                  bw.flush();
              }
              //3关闭
              bw.close();
              System.out.println("执行完毕");
      
          }
      }
      

打印流

  1. PrintWriter:

    • 封装了print() / printIn() 方法,支持写入后换行
    • 支持数据原样打印
    /**
     * 演示PrintWriter
     */
    public class demo7 {
         
        public static void main(String[] args) throws Exception {
         
            //1创建打印流
            PrintWriter pw=new PrintWriter("e:\\IO流\\print.txt");
            //2打印
            pw.println(97);
            pw.println(true);
            pw.println(3.14);
            pw.println('a');
            //3关闭
            pw.close();
            System.out.println("执行完毕");
        }
    }
    

转换流

  1. 桥转换流: InputStreamReader / OutpurStreamEriter

    • 可将字节流转换为字符流
    • 可设置字符的编码方式
    /**
     * 使用OutpurStreamWriter
     */
    public class demo2 {
         
        public static void main(String[] args)throws Exception {
         
            //1创建OutputStreamWriter
            FileOutputStream fos=new FileOutputStream("e:\\IO流\\info.txt");
            OutputStreamWriter osw=new OutputStreamWriter(fos,"gbk");
            //写入
            for (int i = 0; i < 10; i++) {
         
                osw.write("我爱北京,我爱故乡\r\n");
                osw.flush();
            }
            //3关闭
            osw.close();
            System.out.println("执行完毕");
         }
    }
    

File类

  1. 概念:代表物理盘符中的一个文件或者文件夹

  2. 方法

    • createNewFile() //创建一个新文件
    • mkdir() //穿件一个新目录
    • delete() //删除文件或空目录
    • exists() //判断File对象所代表的UI想是否存在
    • getAbsolutePath() //获取文件的绝对路径
    • getName() //取得名字
    • getParent() //获取文件/目录所在的目录
    • isDirectory() //是否是目录
    • isFile() // 是否是文件
    • length() //获得文件的长度
    • listFiles() //列粗目录中的所有内容
    • renameTo()//修改文件名为
    /**
     * File类的使用
     * (1) 分隔符
     * (2) 文件操作
     * (3)  文件夹操作
     */
    public class demo1 {
         
        public static void main(String[] args)throws Exception {
         
    //        separator();
            fileOpe();
        }
        //(1)分隔符
        public  static  void  separator(){
         
            System.out.println("路径分隔符"+ File.pathSeparator);
            System.out.println("名称分隔符"+File.separator);
        }
        //(2)文件操作
        public static void  fileOpe() throws Exception{
         
            //1创建文件 createNewFile()
            File file=new File("e:\\IO流\\file.txt");
    //        System.out.println(file.toString());
            if (!file.exists()) {
         
                boolean b = file.createNewFile();
                System.out.println("创建结果" + b);
            }
    
            //2删除文件
            //2.1直接删除
    //        System.out.println("删除结果"+file.delete());
            //2.2使用JVM退出时删除
    //        file.deleteOnExit();
    //        Thread.sleep(5000);
    
    
    
            //3获取文件信息
            System.out.println("获取文件的绝对路径"+file.getAbsolutePath());
            System.out.println("获取路径:"+file.getPath());
            System.out.println("获取文件名称"+file.getName());
            System.out.println("获取父目录"+file.getParent());
            System.out.println("获取文件长度"+file.length());
            System.out.println("文件创建时间"+new Date(file.lastModified()));
    
            //4判断
            System.out.println("是否可写"+file.canWrite());
            System.out.println("是否时文件"+file.isFile());
            System.out.println("是否隐藏"+file.isHidden());
        }
    ```### FileFilter接口
    
    
  3. Public interface FileFileter

    • boolean accept(File pathname)
  4. 当调用File类中的listFiles()方法时,支持传入FIleFileter接口接口实现类,对获取文件进行过滤,只有满足条件的文件的才可以出现在ListFile()的返回值中

System.out.println("---------FileFilter接口的使用--------------------");



File[] files2=di2.listFiles(new FileFilter() {
   
    @Override
    public boolean accept(File pathname) {
   
        if (pathname.getName().endsWith(".txt")){
   
            return true;
        }
        return false;
    }
});
for (File file: files2) {
   
    System.out.println(file.getName());
}

递归遍历文件夹

/**
 * 案例1 递归遍历文件夹
 *  案例2,递归删除文件夹
 */
public class LIstDemo {
   
    public static void main(String[] args) {
   
//        listDiDir(new File("E:\\桌面"));
        deleteDir(new File("E:\\IO"));
    }

    public static void listDiDir(File dir){
   

        File[] files=dir.listFiles();
        System.out.println(dir.getAbsolutePath());
        if (files!=null && files.length>0){
   
            for (File file: files) {
   
                if (file.isDirectory()){
   //递归
                    listDiDir(file);
                }else {
   
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
    //案例2,递归删除文件夹
    public static  void deleteDir(File dir){
   
        File[] files=dir.listFiles();
        if (files!=null&&files.length>0){
   
            for (File file: files) {
   
                if (file.isDirectory()){
   
                    deleteDir(file);//递归
                }else {
   
                    //删除文件
                    System.out.println(file.getAbsolutePath()+"删除"+file.delete());
                }
            }
        }
        System.out.println(dir.getAbsolutePath()+"删除"+dir.delete());
    }
}

Properties

  1. properties:属性集合

  2. 特点

    • 存储属性名和属性值
    • 属性名和属性值都是字符串类型
    • 没有泛型
    • 和流有关
    /**
     *演示Properties集合的使用
     */
    public class demo2 {
         
        public static void main(String[] args) throws Exception {
         
            //1创建集合
            Properties properties=new Properties();
            //2添加数据
            properties.setProperty("username","zhangsan");
            properties.setProperty("age","20");
            System.out.println(properties.toString());
            //3遍历
            //3.1-----keySet-----
            //3.2-----entrySet----
            //3.3-----stringPropertyNames()-----
            Set<String> proname=properties.stringPropertyNames();
            for (String pro:proname) {
         
                System.out.println(pro+"==="+properties.getProperty(pro));
            }
            //4和流有关的方法
            //-----------list方法---------
    //        PrintWriter pw=new PrintWriter("e:\\IO流\\print.txt");
    //        properties.list(pw);
    //        pw.close();
    
            //---------2store方法保存=----------
            FileOutputStream fos=new FileOutputStream("E:\\IO流\\store.properties");
            properties.store(fos,"注释");
            fos.close();
    
            //----------3load方法加载-------------
            Properties properties2=new Properties();
            FileInputStream fis=new FileInputStream("E:\\IO流\\store.properties");
            properties2.load(fis);
            fis.close();
            System.out.println(properties2.toString());
    
        }
    

总结

  1. 流的概念
    • 内存与存储设备之间传输数据的通道
  2. 流的分类
    • 输入流、输出流;字节流、字符流;节点流、过滤流;
  3. 序列化、反序列化
    • 将对象通过流写入到文件,或将对象通过流读取到内存,必须实现Serializable接口
  4. File对象
    • 代表物理盘符中的一个文件或者文件夹

转载:https://blog.csdn.net/zq140311/article/details/115496047
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场