IO流笔记

IO流就是数据进行传输的管道

传输 :

  •     输入流(把数据传到程序中)-->上传
    
  •     输出流(把数据从程序中输出)-->下载
    

文件类(File)概述 :
File类 : 文件和目录路径名的抽象表现形式;

  • 在计算机中所有的数据都是以文件的格式储存;

  • Java中认为文件是一个对象;

File类的四种构造方法 :

        /*第一种
        File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。*/
        File file = new File("D:\\a\\b.txt");

        /*第二种
        File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。*/
        File file1 = new File("D:\\a", "b.txt");

        /*第三种
        File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。*/
        File fileParent = new File("D:\\a");
        File file2 = new File(fileParent, "b.txt");
        
        /*第四种
        File(URI uri)
          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。*/

创建功能 :

  • createNewFile() : 
    * 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件;
    * 若已存在则不会创建;
    * 如果没指明创建文件的路径,那么文件是在项目路径下创建;
    * 如果路径不存在则不能创建;
    * 同一个项目下若创建一个无后缀名的文件不能与项目中文件夹同名
File file = new File("D:\\a\\b.txt");

        /*createNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。*/
        boolean newFile = file.createNewFile();
        System.out.println(newFile);//true

        /*如果没指明创建文件的路径,那么文件是在项目路径下创建*/
        File file1 = new File("dd.txt");
        boolean newFile1 = file1.createNewFile();
        System.out.println(newFile1);//true

        /*如果路径不存在则不能创建*/
        File file2 = new File("D:\\aaa\\b.txt");
        boolean newFile2 = file1.createNewFile();
        System.out.println(newFile2);//false
  • mkdir() :
    * 创建此抽象路径名指定的目录;
    * 创建一个文件夹,但该方法不能创建多层文件夹;
File file = new File("D:\\a\\aaa");
boolean mkdir = file.mkdir();
System.out.println(mkdir);//true

File file1 = new File("D:\\a\\bbbb\\aaaa");
boolean mkdir1 = file1.mkdir();
System.out.println(mkdir1);//false
  • mkdirs() :
    * 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录;
    * 创建多层文件夹;
File file1 = new File("D:\\a\\bbbb\\aaaa");
boolean mkdirs = file1.mkdirs();
System.out.println(mkdirs);//true
  • delete() :
    * 删除此抽象路径名表示的文件或目录;
    * 若删除文件夹里还有文件夹或文件,则删除失败;
File file2 = new File("D:\\a\\aaa");
boolean delete = file2.delete();
System.out.println("delete = " + delete);//false

File file4 = new File("D:\\a\\ccc");
boolean delete2 = file4.delete();
System.out.println("delete2 = " + delete2);//false

File file3 = new File("D:\\a\\aaa\\aaaa");
boolean delete1 = file3.delete();
System.out.println("delete1 = " + delete1);//true

File file5 = new File("D:\\a\\ccc\\b.txt");
boolean delete3 = file5.delete();
System.out.println("delete3 = " + delete3);//true
  • renameTo(File dest) :
    *  重新命名此抽象路径名表示的文件。
    * 同路径下操作为改名;
    * 不同路径下操作为剪切;
        File file = new File("D:\\a\\aa.txt");
        System.out.println("file = " + file);//file = D:\a\aa.txt

        File fileRename = new File("D:\\a\\aa");
        boolean aa = file.renameTo(fileRename);
        System.out.println("aa = " + aa);//true

        File file1 = new File("D:\\a\\aa\\aaaa\\a.txt");
        boolean b = file1.renameTo(new File("D:\\a\\b.txt"));
        System.out.println("b = " + b);//true
  • isDirectory
    * 判断是否是目录
  • isFile
    * 判断是否是文件
  • exists
    * 判断是否存在
  • canRead
    * 判断是否可读
  • canWrite
    * 判断是否可写
  • isHidden
    * 判断是否隐藏
        boolean result = file.isDirectory();//判断是否是目录
        System.out.println(result);//true
        result = file1.isDirectory();
        System.out.println(result);//false

        result = file.isFile();//判断是否是文件
        System.out.println(result);//false
        result = file1.isFile();
        System.out.println(result);//true

        result = file.exists();//判断是否存在
        System.out.println(result);
        result = file1.exists();
        System.out.println(result);

        result = file.canRead();//判断是否可读
        System.out.println(result);
        result = file1.canRead();
        System.out.println(result);

        result = file.canWrite();//判断是否可写
        System.out.println(result);
        result = file1.canWrite();
        System.out.println(result);

        result = file.isHidden();//判断是否隐藏
        System.out.println(result);
        result = file1.isHidden();
        System.out.println(result);
  • getAbsolutePath() :
    * 获取绝对路径;
  • getPath() :
    * 获取相对路径;
  • getName() :
    * 获取文件名;
  • length() :
    * 获取长度;
  • lastModified() :
    * 获取最后修改时间;
  • file() :
    * 获取指定目录下所有文件或者文件夹的名称数组;
  • listFiles() :
    * 获取指定目录下所有文件或者文件夹的File数组;

IO流的分类 :

流向分 : (不管是输入流还是输出流都是相对于你当前的程序而言)

  •     > 输入流 (读read) input
    
  •     > 输出流 (读write) output
    

传输的内容分 :

  •     >字节数据 : 图片 , 音频 , 视频
                  *   字节输入流(InputStream)
                  *   字节输出流(OutputStream)
    
  •     >字符数据
                  *   字符输入流(Readr)      
                  *   字符输出流(Writer)
    

ps : 不管是字节流还是字符流,底层流动都是字节;outputStream

OutputStream的子类 :

  • FileOutputStream(File file)
              创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
  • FileOutputStream(String name)
              创建一个向具有指定名称的文件中写入数据的输出文件流。
//创建管道,创建流对象
        FileOutputStream fos = new FileOutputStream("a.txt");
        String data = "Hello World";
        //把字符数据转换成字节数据
        byte[] bytes = data.getBytes();
        //通过管道把数据写入文件中
        fos.write(bytes);
        //关闭管道
        fos.close();

缓冲符输入流与带符号输入流演示 :

周杰伦
周润发
刘德华
郭富城
黎明
        BufferedReader br = new BufferedReader(new FileReader("names.txt"));
        LineNumberReader lineNumberReader = new LineNumberReader(new FileReader("names.txt"));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        while ((line = lineNumberReader.readLine()) != null) {
            System.out.println(lineNumberReader.getLineNumber()+":"+line);
        }
        br.close();
        lineNumberReader.close();

结果 :

周杰伦
周润发
刘德华
郭富城
黎明
1:周杰伦
2:周润发
3:刘德华
4:郭富城
5:黎明

数据输入输出流 :

  • DataInputStream
    * 可以以适当的形式把数据读到程序中;
    * 数据 : 8种基本类型,字符串类型;

  • DataOutputStream
    * 可以以适当的形式把数据写入流中;
    * 数据 : 8种基本类型,字符串类型;

  • 注意 : 怎么写进去就怎么读出来,顺序不能乱

  • 应用场景 : 网络编程
    * 客户端(write)–服务端(read)

数据输入输出流是基本输入输出字节流的子类(InputStream/OutputStream)
数据输出流允许应用程序以适当方式将数据写入输出流中,然后应用程序可以使用数据输入流将数据读入

DataOutputStream dos = new DataOutputStream(new FileOutputStream("dos.txt"));
        dos.writeByte(100);
        dos.writeShort(101);
        dos.writeChar(102);
        dos.writeInt(103);
        dos.writeLong(104);
        dos.writeFloat(105.5f);
        dos.writeDouble(106.6);
        dos.writeBoolean(true);
        dos.writeUTF("HELLO");

        dos.close();
byte b1 = dis.readByte();
        short i = dis.readShort();
        char c = dis.readChar();
        int i1 = dis.readInt();
        long l = dis.readLong();
        float v = dis.readFloat();
        double v1 = dis.readDouble();
        boolean b = dis.readBoolean();
        String s = dis.readUTF();
        System.out.println(b1);
        System.out.println(i);
        System.out.println(c);
        System.out.println(i1);
        System.out.println(l);
        System.out.println(v);
        System.out.println(v1);
        System.out.println(b);
        System.out.println(s);

        dis.close();

打印流 :

打印流分字节打印流(PrintStream)和字符打印流(PrintWriter),打印流只有输出流(因为是打印),没有输入流
字节打印流继承基本的字节流OutputStream
字符打印流继承基本的字符流Writer

打印流的特殊功能 :

  1. 可以打印说有的数据(基本类型+引用类型) 引用类型 : 该类型对象toString方法的内容;
  2. 可以自动刷新;
/*PrintWriter pw = new PrintWriter("pw.txt");*/
        //开启自动刷新
        //方法一
        PrintWriter pw = new PrintWriter(new FileWriter("pw.txt"),true);
        //方法二
        /*PrintWriter pw = new PrintWriter(new FileOutputStream("pw.txt"),true);*/
        pw.println(true);
        pw.println(1);
        pw.println('a');
        pw.println("hahaha");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值